热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java邮件发送亚马逊SimpleEMailService(SES)作SMTP服务器

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);
}

 



推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
author-avatar
我还是看好小棠呀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有