作者:我还是看好小棠呀 | 来源:互联网 | 2023-08-22 20:32
AWSSES使用介绍可见:https:docs.aws.amazon.comzh_cnseslatestDeveloperGuideWelcome.html总结为一下两点即可:1.
AWS SES使用介绍可见:https://docs.aws.amazon.com/zh_cn/ses/latest/DeveloperGuide/Welcome.html
总结为一下两点即可:
1. 登陆AWS进入控制台,然后点击SMTP Settings,创建SMTP账户:Create My SMTP Credentials,按提示操作生成username and password,这个看起来类似IAM User的key。
AWS控制台地址为:https://console.aws.amazon.com
2.验证发送邮件地址,另外如果发给其他人,也需要在这里验证,系统会发邮件到对方邮箱让他确认,这样对方才能收到SES发来的邮件,就跟我们订阅新闻邮件类似。
开发 :直接使用文档中得demo即可,这里我选用此demo,也可集成AWS的。
需要下载javax.mail.jar,代码中改换的参数换掉。
附加我的代码(加了图片的),部分代码为其他引用:
public void CreateMessageIn() throws MessagingException, IOException {
Tools tls = new Tools();
//String subject = "Important feedback";
// ****************************创建会话***************************************
final Properties props = new Properties();
String emlDestUp = ldest.toUpperCase();
// if (emlDestUp.contains("@QQ.COM") || emlDestUp.contains("@PIONEER.NET.AU") ) {
if (emlDestUp.contains("@QQ.COM")) {
props.put("mail.smtp.host", "smtp.mxhichina.com");// 发件人使用发邮件的电子信箱服务器
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.user", "[email protected]");
props.put("mail.password", "Paby123456");
props.put("mail.smtp.port", "25");
} else {
props.put("mail.smtp.host", "email-smtp.us-east-1.amazonaws.com");// 发件人使用发邮件的电子信箱服务器
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.port", "25");
props.put("mail.user", "AKIAJPEOFRGFATV42SDQ");
props.put("mail.password", "AuhmFfe1lMRSVxPpo44ZfQjjPGqyiZsymzJOtfebUEKc");
}
/*
* http://blog.csdn.net/u013076997/article/details/53760828?locatiOnNum=14&fps=1
* javax.mail发送邮件(带附件)
* http://blog.csdn.net/wangxinqn/article/details/1708705
*
近日使用javamail 为公司的软件添加了邮件收发功能。遇到了Unsupported record version Unknown-50.49异常。
该异常只会在发送邮件的时候产生,而且是应为所有邮箱使用了SSL加密功能。应该是javamail包的问题
初步的解决方案是在你的发送类里 加上props.put("mail.smtp.quitwait", "false");将该异常屏蔽调
*/
props.put("mail.smtp.quitwait", "false");
Authenticator atctr = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
String userName = props.getProperty("mail.user");
String passWord = props.getProperty("mail.password");
return new PasswordAuthentication(userName, passWord);
}
};
Session mailsession = Session.getInstance(props, atctr); // 获得默认的session对象
mailsession.setDebug(true);
// *****************************构造消息**************************************
MimeMessage msg = new MimeMessage(mailsession);
InternetAddress from = null;
if (lfrom == null ) {
Properties pros = new Properties();
pros.load(this.getClass().getClassLoader()
.getResourceAsStream("server.properties"));
String fel = "[email protected]";
if (dfg > 0)
fel = pros.getProperty("dreamemail");
from = new InternetAddress(fel);
} else
from = new InternetAddress(lfrom);
msg.setFrom(from); // 发送者email帐号
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(ldest)); // 设置收件人地址并规定其类型
if ( Constant.timeUtcFlag ) // true
msg.setSentDate(tls.getUtcDateStrNowDate());
else
msg.setSentDate(new Date()); // 设置发信时间
msg.setSubject(ltitle); // 设置主题
msg.setText(lcontent);
msg.setContent(lcontent, "text/html;charset=UTF-8"); // 设置 正文
if ( laddonName != null ) {
/*// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
Multipart multipart = new MimeMultipart();
// 设置邮件的文本内容
BodyPart cOntentPart= new MimeBodyPart();
contentPart.setText(lcontent);
multipart.addBodyPart(contentPart);
// 添加附件
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(laddonName);
// 添加附件的内容
messageBodyPart.setDataHandler(new DataHandler(source));
// 添加附件的标题
// 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
messageBodyPart.setFileName(MimeUtility.encodeText("Image"));
multipart.addBodyPart(messageBodyPart);
msg.setContent(multipart); */
// 创建邮件正文
MimeBodyPart text = new MimeBodyPart();
text.setContent(lcontent + "
", "text/html;charset=UTF-8");
// 创建图片
MimeBodyPart img = new MimeBodyPart();
DataHandler dh = new DataHandler(new FileDataSource(laddonName));//图片路径
img.setDataHandler(dh);
img.setContentID("image_id"); // 创建图片的一个表示用于显示在邮件中显示
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(img);
mm.setSubType("related");// 设置正文与图片之间的关系
// 图片与正文的 body
MimeBodyPart all = new MimeBodyPart();
all.setContent(mm);
msg.setContent(mm);
}
// 保存邮件
msg.saveChanges();
// 发送邮件
Transport.send(msg);
logger.info("email has sended to " + ldest);
}