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> ...
随机推荐
- DMABUFF
1.DMABUF框架提供了在多设备间共享缓存的通用方法,支持DMABUF的设备驱动可以将一个DMA缓存以文件句柄的方式输出到用户空间(输出者规则),以文件句柄的方式从用户空间获取一个DMA缓存,这个文 ...
- OASGraph 转换rest api graphql 试用
创建rest api lb4 appdemo 参考提示即可 安装 OASGraph git clone https://github.com/strongloop/oasgraph.git cd oa ...
- Linux 'XXXXXX' "is not in the sudoers file. This incident will be reported" 解决方法
添加方法如下: 1.进入root模式su - 注意:su和-之间有空格输入当前用户的密码 2.添加写权限chmod u+w /etc/sudoers 3.将自己加入到sudoers中 gedit / ...
- win10禁用自动更新服务
win10禁用自动更新服务 按Win+R,打开运行,输入"services.msc"打开服务: 找到"Windows Update",选择属性,修改为禁用即可: ...
- Server对象,HttpServerUtility类,获取服务器信息
在Asp.net WebForm中,Server对象是HttpServerUtility类的实例.看下图: 而在Asp.net MVC中,Server对象是HttpServerUtilityBase对 ...
- netty搭建Tcp服务器实践
在netty基本组件介绍中,我们大致了解了netty的一些基本组件,今天我们来搭建一个基于netty的Tcp服务端程序,通过代码来了解和熟悉这些组件的功能和使用方法. 首先我们自己创建一个Server ...
- OpenFileDialog 打开快捷方式时,返回的是快捷方式引用的路径,而不是快捷方式(.lnk)自身的路径
OpenFileDialog 打开 .lnk 文件. OpenFileDialog 有个DereferenceLinks 属性:获取或设置一个值,该值指示文件对话框是返回快捷方式引用的文件的位置,还是 ...
- War包反编译过程
War包反编译过程 很多人可以将项目编译为war发布,可是有时候得到war确看不到源码.今天分享下war反编译的过程: 1.首先下载一个小工具,在http://jd.benow.ca/官网下载jd-g ...
- 【ActiveMQ入门-9】ActiveMQ学习-与Spring集成2
概述: 下面将介绍如何在Spring下集成ActiveMQ. 消费者:同步接收: 目的地:Queue 环境: 共5个文件 Receiver.java ReceiverTest.java Sender. ...
- 介绍了如何取成员函数的地址以及调用该地址:C++
摘要:介绍了如何取成员函数的地址以及调用该地址. 关键字:C++成员函数 this指针 调用约定 一.成员函数指针的用法 在C++中,成员函数的指针是个比较特殊的东西.对普通的函数指针来说,可以视为一 ...