📄 send.java
字号:
package zx.mmy;
import java.io.File;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
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 Send {
/**
* 发送邮件
* @param from:发件人
* @param password:发件人密码
* @param to:收件人
* @param host:smtp服务器名
* @param subject:邮件标题
* @param filename:上传附件路径
* @param content:邮件内容
*/
public void sender(String from, String password, String to, String host, String subject, String filename, String content) {
String[] arr_to = to.split(",");
System.out.println("总共发送" + arr_to.length + "封邮件");
try{
System.out.println("邮件发送中请稍等。。。\n\n");
for(int count = 0; count < arr_to.length; count++) {
//在属性列表中搜索属性
Properties properties = System.getProperties();
//调用 Hashtable 的方法 put设置smtp服务器的名字
properties.setProperty("mail.smtp.host", host);
//设置该邮件服务器的证明是唯一的
properties.setProperty("mail.smtp.auth", "true");
PopupAuthenticator popAuthenticator = new PopupAuthenticator(from, password);
//创建session对象,并通过Properties获取邮件服务器、用户名、密码等以及通过Authenticator进行身份验证
Session session = Session.getInstance(properties, popAuthenticator);
/*Session session = Session.getInstance(properties, new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("zhangshiwen1985@126.com", "198509");
}
});*/
//创建发送消息
MimeMessage message = new MimeMessage(session);
//InternetAddress为信件标上地址,setFrom把地址与消息链接起来
message.setFrom(new InternetAddress(from));
/**
* 地址的3种预定义类型如下:
* 1.Message.RecipientType.TO(点对点发送)
* 2.Message.RecipientType.CC(抄送)
* 3.Message.RecipientType.BCC(密送)
*/
//InternetAddress为信件标上地址,setRecipient把地址与消息链接起来
message.setRecipient(Message.RecipientType.TO , new InternetAddress(arr_to[count]));
//设置标题
message.setSubject(subject);
if(filename != null) {
File file = new File(filename);//创建File对象
MimeBodyPart one_mbp = new MimeBodyPart();//one_mbp代表mime类型(这里为邮件内容)的对象
one_mbp.setContent(content, "text/plain;charset=gb2312");//将邮件内容加到mbp1对象
MimeBodyPart two_mbp = new MimeBodyPart();//two_mbp代表mime类型(这里为邮件附件)的对象
FileDataSource fds = new FileDataSource(file); //创建文件数据源对象(JAF)
//先将附件资源FileDataSource传递给DataHandler类的构造器,再通过setDataHandler设置数据处理类
two_mbp.setDataHandler(new DataHandler(fds));
two_mbp.setFileName(MimeUtility.encodeText(fds.getName(),"gb2312","B"));
Multipart mp = new MimeMultipart();//相当于容器,容纳BodyPart对象
mp.addBodyPart(one_mbp);
mp.addBodyPart(two_mbp);
message.setContent(mp);
} else {
message.setContent(content, "text/plain;charset=gb2312");//如果没有附件,直接处理
}
Transport transport = session.getTransport("smtp");
transport.connect();
transport.sendMessage(message, message.getAllRecipients());
transport.close();
System.out.println("已成功发送信息至" + arr_to[count]);
}
System.out.println("全部发送成功。。。");
//这里需要捕获一个异常,用于判断邮件用户不存在时。
} catch(Exception ex) {
System.out.print("该邮件帐号不存在!");
ex.printStackTrace();
}
}
//通过Authenticator进行身份验证
class PopupAuthenticator extends Authenticator {
String username = null;
String password = null;
public PopupAuthenticator(String user, String pass) {
username = user;
}
public PasswordAuthentication performCheck(String user, String pass) {
username = user;
password = pass;
return getPasswordAuthentication();
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -