Java 阿里云 邮件(带附件)发送
简单的使用. 阿里云每天免费200封 1000封才2块钱..
465端口 使用正常
25 端口 不正常
附上阿里云的文档: https://help.aliyun.com/document_detail/29450.html?spm=a2c4g.11186623.6.611.5212235bSuQnh1
package com.gwzx.framework.utils; import java.util.Properties; import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility; /**
* 阿里云邮件发送
*/
public class MailUtil {
private static final String ALIDM_SMTP_HOST = "smtpdm.aliyun.com";
private static final int ALIDM_SMTP_PORT = 25;// 或80 // 发件人的账号 和 密码
private String user;
private String password; public MailUtil() {
this("阿里云SMTP账户", "SMTP密码");
} public MailUtil(String user, String password) {
this.user = user;
this.password = password;
} public static void main(String[] args) {
//new MailUtil().send("1161588342@qq.com", "测试1", "nihao显示");
//new MailUtil().send("1161588342@qq.com", "测试1", "市劳动纠纷联赛积分了","C:/Users/guo/Desktop/Proguard.xml");
} /**
* 发送邮件
* @param toEmail 收件人邮箱地址
* @param subject 邮件标题
* @param content 邮件内容 可以是html内容
*/
public void send(String toEmail, String subject, String content) {
Session session = loadMailSession();
// session.setDebug(true);
// 创建邮件消息
MimeMessage message = new MimeMessage(session);
try {
// 设置发件人
message.setFrom(new InternetAddress(user));
Address[] a = new Address[1];
a[0] = new InternetAddress(user);
message.setReplyTo(a);
// 设置收件人
InternetAddress to = new InternetAddress(toEmail);
message.setRecipient(MimeMessage.RecipientType.TO, to);
// 设置邮件标题
message.setSubject(subject);
// 设置邮件的内容体
message.setContent(content, "text/html;charset=UTF-8");
// 发送邮件
Transport.send(message);
} catch (MessagingException e) {
String err = e.getMessage();
// 在这里处理message内容, 格式是固定的
System.out.println(err);
}
} /**
* 发送邮件 带附件
* @param toEmail 收件人邮箱地址
* @param subject 邮件标题
* @param content 邮件内容 可以是html内容
* @param attachPath 附件路径
*/
public void send(String toEmail, String subject, String content, String attachPath) {
Session session = loadMailSession(); MimeMessage mm = new MimeMessage(session);
try {
//发件人
mm.setFrom(new InternetAddress(user));
//收件人
mm.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmail)); // 设置收件人
// mm.setRecipient(Message.RecipientType.CC, new
// InternetAddress("XXXX@qq.com")); //设置抄送人
//标题
mm.setSubject(subject);
//内容
Multipart multipart = new MimeMultipart();
//body部分
BodyPart contentPart = new MimeBodyPart();
contentPart.setContent(content, "text/html;charset=utf-8");
multipart.addBodyPart(contentPart); //附件部分
BodyPart attachPart = new MimeBodyPart();
FileDataSource fileDataSource = new FileDataSource(attachPath);
attachPart.setDataHandler(new DataHandler(fileDataSource));
attachPart.setFileName(MimeUtility.encodeText(fileDataSource.getName()));
multipart.addBodyPart(attachPart); mm.setContent(multipart);
Transport.send(mm);
} catch (Exception e) {
String err = e.getMessage();
// 在这里处理message内容, 格式是固定的
System.out.println(err);
} } private Session loadMailSession() {
try {
// 配置发送邮件的环境属性
final Properties props = new Properties();
// 表示SMTP发送邮件,需要进行身份验证
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", ALIDM_SMTP_HOST);
// props.put("mail.smtp.port", ALIDM_SMTP_PORT);
// 如果使用ssl,则去掉使用25端口的配置,进行如下配置,
props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.port", "465");
// 发件人的账号
props.put("mail.user", user);
// 访问SMTP服务时需要提供的密码
props.put("mail.password", password);
// 构建授权信息,用于进行SMTP进行身份验证
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 用户名、密码
String userName = props.getProperty("mail.user");
String password = props.getProperty("mail.password");
return new PasswordAuthentication(userName, password);
}
};
// 使用环境属性和授权信息,创建邮件会话
return Session.getInstance(props, authenticator);
} catch (Exception e) {
e.printStackTrace();
System.out.println("mail session is null");
}
return null;
} }
Java 阿里云 邮件(带附件)发送的更多相关文章
- 用ASP.NET Core 1.0中实现邮件发送功能-阿里云邮件推送篇
在上篇中用MailKit实现了Asp.net core 邮件发送功能,但一直未解决阿里云邮件推送问题,提交工单一开始的回复不尽如人意,比如您的网络问题,您的用户名密码不正确等,但继续沟通下阿里云客户还 ...
- python实现邮件发送完整代码(带附件发送方式)
实例一:利用SMTP与EMAIL实现邮件发送,带附件(完整代码) __author__ = 'Administrator'#coding=gb2312 from email.Header import ...
- Delphi阿里云邮件推送【支持单一发信、邮件批量发送和获取指定条件下的发送数据】
作者QQ:(648437169) 点击下载➨Delphi阿里云邮件推送 阿里云api文档 [Delphi阿里云邮件推送]支持SingleSendMail(单一发信接口). ...
- Java版阿里云通信短信发送API接口实例(新)
阿里云通信(原名阿里大于)的短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信通知等. 完美支撑双11期间2亿用户,发送6亿短信 ...
- Laravel 下结合阿里云邮件推送服务
最近在学习laravel做项目开发,遇到注册用户推送邮件的问题,之前用java做的时候是自己代码写的,也就是用ECS推送邮件,但是现在转php的laravel了就打算用php的邮件发送功能来推送邮件, ...
- 解决.NET Core中MailKit无法使用阿里云邮件推送服务的问题
在博问中(.net core怎么实现邮件发送)知道了MailKit无法使用阿里云邮件推送服务发送邮件的问题,自已实测也遇到同样的问题,而用自己搭建的邮件服务器没这个问题. 于是,向阿里云提交了工单.. ...
- wordpress使用阿里云邮件推送服务实现发送邮件
之前用腾迅云时,配置了wordpress是可以使用邮件服务的,然而到了阿里云,却无法使用了,有人说是因为阿里云关了25端口,但腾迅好像也关了. 百度看看有没有其他方法,最终让我找到个方法,可惜不是很完 ...
- 【简书】在阿里云自带的CentOS + LAMP环境下部署一个Laravel项目
在阿里云自带的CentOS + LAMP环境下部署一个Laravel项目 作者 DonnieZero 关注 2017.07.29 22:02* 字数 2218 阅读 5556评论 3喜欢 1赞赏 1 ...
- springboot 使用阿里云短信服务发送验证码
一.申请阿里云短信服务 1.申请签名 2.申请模板 3.创建accesskey(鼠标悬停在右上角头像) 二.代码实现 1.springboot引入maven依赖 <dependency> ...
随机推荐
- ORA-25205: the QUEUE SYS.KUPC$S_1_20180123193821 does not exist
[oracle@hbjfdba:/oratmp]#expdp \'XXX as sysdba\' DIRECTORY=TMP_DUMP_DIR DUMPFILE=NEW_LOCAL_HB_DMN_%U ...
- java中<load-on-startup>含义
java中 load-on-startup 含义 java中的 load-on-startup 用于表示该servlet是否在servlet容器启动的时候加载. 示例: <load-on-sta ...
- bzoj 2119 股市的预测——枚举长度的关键点+后缀数组
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2119 就是找差分序列上中间差 m 的相等的两段. 考虑枚举这样一段的长度 L .可以把序列分 ...
- Vue 网络请求
Vue网络请求,用的是vue-resource 1. 首先需要安装vue-resource npm install vue-resource 2. 安装好之后,会在package.json文件中自动加 ...
- 性能计数器监控typeperf
获取性能计数器名称列表: typeperf -qx 监控: typeperf.exe "\JetByte TCP Stats Perf Counters Service\IPv4: ESTA ...
- C# 5.0中引入了async 和 await
C# 5.0中引入了async 和 await.这两个关键字可以让你更方便的写出异步代码. 看个例子: public class MyClass { public MyClass() { Displa ...
- 【EasyUI学习-3】Easyui tabs入门实践
作者:ssslinppp 1. 摘要 一般我们在设计程序主框架的时候,当点击(子)菜单时,希望相应界面都在tabs页中显示: 在显示的时候,如果之前打开过该界面,则希望重新选中对应的tab ...
- windows git 清除已保存的密码
进入git目录 右键 git-bash.exe 执行命令: git config --system --unset credential.helper 然后执行git clone http://... ...
- 小峰servlet/jsp(3)登陆功能实现
一.User模型: User.java: package com.java1234.model; public class User { private int id; private String ...
- jenkins的war包下载地址
https://jenkins.io/doc/book/installing/