⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 send.java

📁 理想的邮件收发管理
💻 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 + -