在Kotlin

问题描述 投票:0回答:2
我想在某些事件发生时向用户发送电子邮件,我在Internet上搜索,但找不到该方法。 谁能告诉我正确的道路。

android kotlin
2个回答
0
投票
然后我刚刚在我想向用户发送电子邮件的活动中实施。 提示:使用最新版本的Javamail,不要忘记在清单文件中打开Internet许可

private fun sendMail(etEmail: EditText, etSubject: EditText, etMessage: EditText) { // Set up the mail server val host = "smtp.sendgrid.net" val props = Properties().apply { put("mail.smtp.auth", "true") put("mail.smtp.ssl.enable", "true") put("mail.smtp.host", host) put("mail.smtp.port", "465") } // Set up authentication val session = Session.getInstance(props, object : Authenticator() { override fun getPasswordAuthentication() = PasswordAuthentication("apikey","yourpaswordxyzfromsendgridaccount") }) try { // Create a default MimeMessage object val message = MimeMessage(session).apply { setFrom(InternetAddress("abc@xyz")) addRecipient(Message.RecipientType.TO, InternetAddress(etEmail.text.toString())) subject = etSubject.text.toString() setText(etMessage.text.toString()) } // Send the message thread(start = true) { Transport.send(message) println("Email sent successfully.") println("running from thread(): ${Thread.currentThread()}") } Toast.makeText(this,"Mail sent",Toast.LENGTH_LONG).show() } catch (e: MessagingException) { e.printStackTrace() } }

build.gradle.kts

0
投票
dependencies { implementation("com.sun.mail:android-mail:1.6.2") implementation("com.sun.mail:android-activation:1.6.2") // important }

AndroidManifest.xml

中的第二秒
<uses-permission android:name="android.permission.INTERNET" />

三分之二创建一个类(ex。:MailService)

import android.os.StrictMode
import java.util.Properties
import javax.mail.Authenticator
import javax.mail.Message
import javax.mail.PasswordAuthentication
import javax.mail.Session
import javax.mail.Transport
import javax.mail.internet.InternetAddress
import javax.mail.internet.MimeMessage

class MailService {
    // function send email
    fun sendEmail() {
        val username = "[email protected]" // replace with your email
        val password = "your_email_password" // replace with your password email
        val recipient = "[email protected]" // replace with recipient email
        // properties
        val props = Properties()
        props["mail.smtp.host"] = "smtp.mail.com" // replace with your SMTP server
        props["mail.smtp.port"] = "465" // replace with your SMTP port
        props["mail.smtp.auth"] = "true"
        props["mail.smtp.starttls.enable"] = "true"
        props["mail.smtp.socketFactory.port"] = "465" // replace with your SMTP port
        props["mail.smtp.socketFactory.class"] = "javax.net.ssl.SSLSocketFactory"
        // session
        val session = Session.getDefaultInstance(props, object: Authenticator() {
            override fun getPasswordAuthentication(): PasswordAuthentication {
                return PasswordAuthentication(username, password)
            }
        })
        // policy
        val policy = StrictMode.ThreadPolicy.Builder().permitAll().build()
        StrictMode.setThreadPolicy(policy)
        // send message
        try {
            val email = MimeMessage(session)
            email.setFrom(InternetAddress(username))
            email.addRecipient(Message.RecipientType.TO, InternetAddress(recipient))
            email.subject = "Title Email" // email title
            email.setText("Test Email Body"// email body) 
            Transport.send(email)
            println("SUCCESS: Email sent successfully!")
        } catch (e: Exception) {
            println("ERROR: Fail sending email: ${e.message}")
            e.printStackTrace()
        }
    }

}

在MainAttivity中获得最高的作用

class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContentView(R.layout.activity_main) ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) insets } // button val button = findViewById<Button>(R.id.button) // send email after click button button.setOnClickListener { val mailService = MailService() mailService.sendEmail() } } }
我希望我能帮助你,


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.