• Java Mail 发送邮件


    什么是 SMTP 协议

    SMTP或简单的邮件传输协议,是一种将电子邮件从一台服务器发送到另一台服务器的快速简便的方法。通过 SendGrid 等第三方服务商提供的SMTP服务,我们可以通过第三方服务器而不是客户端或服务器来传递电子邮件。

    要了解 SMTP 协议, 我们使用Telnet发送测试SMTP电子邮件

    $ telnet smtp.sendgrid.net 25
    Trying 169.45.113.201...
    Connected to smtp.sendgrid.net.
    Escape character is '^]'.
    220 SG ESMTP service ready at ismtpd0009p1sjc2.sendgrid.net
    AUTH LOGIN #成功连接到SendGrid后,通过键入登录到服务器AUTH LOGIN。
    334 VXNlcm5hbWU6 #邮件服务器以回应334 VXNlcm5hbWU6,即对您的用户名进行Base64编码的请求。
    YXBpa2V5 #apikey即用户名的加密
    334 UGFzc3dvcmQ6 #此响应是对您的密码(您的API密钥)的Base64编码请求。
    ??????????????? #在下一行中输入您的Base64转换后的API密钥作为密码。
    235 Authentication successful #邮件服务器以响应235 Authentication successful。到此为止表示您通过选定端口到smtp.sendgrid.net的连接已打开,并且您的API密钥有效。
    

    sendgrid文档

    通过SMTP协议, 编写客户端向邮件服务器提交发送邮件请求

    package mail
    
    import javax.mail.internet.MimeMessage
    import java.util.Properties
    import javax.mail.Session
    import javax.mail.Message
    import javax.mail.Transport
    import java.util.Date
    import javax.mail.MessagingException
    
    fun main() {
    	val props = Properties();
    	// SMTP 邮件服务器名称
    	props.put("mail.smtp.host", "smtp.139.com");
    //	props.put("mail.smtp.port", "25");
    	val session = Session.getInstance(props, null);
    
    	try {
    		val msg = MimeMessage(session);
    		// 发件人
    		val me = "me@139.com"
    		msg.setFrom(me);
    		// 收件人
    		msg.setRecipients(Message.RecipientType.TO, "test@qq.com")
    		msg.setSubject("subject")
    		// 发送日期
    		msg.setSentDate(Date())
    		// 正文
    		msg.setText("content");
    		// SMTP 邮件服务器认证账号&密码
    		Transport.send(msg, me, "139pswd");
    		println("发送OK")
    	} catch (e: Throwable) {
    		println("发送失败 ${ e.message }");
    		e.printStackTrace()
    	}
    }
    
  • 相关阅读:
    对于java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I错误解决
    attempted to assign id from null one-to-one
    The class has no identifier property
    javax.servlet.ServletException: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()Z
    final和static
    hibernate事务
    log4j:WARN Please initialize the log4j system properly.解决
    用最有效率的方法算出2乘以8等於几
    char型变量中能存贮一个中文汉字
    基本数据类型范围
  • 原文地址:https://www.cnblogs.com/develon/p/11679474.html
Copyright © 2020-2023  润新知