`

Java Mail

 
阅读更多
public class MailUtils {
	private static String host;
	private static String username;
	private static String password;
	private static String port;
	private static String fromAdr;
	private static String sendName;
	// sendName + from 组成邮箱的发件人信息
	static {
		try {
			host =  "smtp.sina.com";
			username = "xxxyy@sina.com";
			password =  "xxx";
			port = "465";
			fromAdr = "sys@sina.com";
			sendName = "测试mail";
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 发送邮件
	 * @param toAdr 收件人地址,可多个
	 * @param title 邮件标题
	 * @param body  主体内容
	 * @param filepath 附件地址
	 * @return
	 */
	public static boolean sendMail(String toAdr, String title, String body,
			List<String> filepath) {
		
		if (body == null || "".equals(body)) {
			body = "";
		}
		if (title == null || "".equals(title)) {
			title = "无主题";
		}
		try {
			// 创建Properties对象
			Properties props = System.getProperties();
			// 创建信件服务器
			props.setProperty("mail.smtp.host", host);
			props.setProperty("mail.smtp.auth", "true"); // 通过验证
			props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
			props.setProperty("mail.smtp.socketFactory.fallback", "false");
			props.setProperty("mail.smtp.port", port);
			//props.setProperty("mail.smtp.socketFactory.port", "465");
			// 得到默认的对话对象
			Session session = Session.getDefaultInstance(props, null);

			// 创建一个消息,并初始化该消息的各项元素
			MimeMessage msg = new MimeMessage(session);
			sendName = MimeUtility.encodeText(sendName);
			msg.setFrom(new InternetAddress(sendName + "<" + fromAdr + ">"));
			// 创建收件人列表可多个
			if (toAdr != null && toAdr.trim().length() > 0) {
				String[] arr = toAdr.split(",");
				int receiverCount = arr.length;
				if (receiverCount > 0) {
					InternetAddress[] address = new InternetAddress[receiverCount];
					for (int i = 0; i < receiverCount; i++) {
						System.out.println(arr[i]);
						address[i] = new InternetAddress(arr[i]);
					}
					msg.addRecipients(Message.RecipientType.TO, address);
					msg.setSubject(title);
					// 后面的BodyPart将加入到此处创建的Multipart中
					Multipart mp = new MimeMultipart();
					// 附件操作
					if (filepath != null && filepath.size() > 0) {
						for (String filename : filepath) {
							MimeBodyPart mbp = new MimeBodyPart();
							// 得到数据源
							FileDataSource fds = new FileDataSource(filename);
							// 得到附件本身并至入BodyPart
							mbp.setDataHandler(new DataHandler(fds));
							// 得到文件名同样至入BodyPart
							mbp.setFileName(fds.getName());
							mp.addBodyPart(mbp);
						}
						MimeBodyPart mbp = new MimeBodyPart();
						mbp.setText(body);
						mp.addBodyPart(mbp);
						// 移走集合中的所有元素
						filepath.clear();
						// Multipart加入到信件
						msg.setContent(mp);
					} else {
						// 设置邮件正文
						msg.setText(body);
					}
					// 设置信件头的发送日期
					msg.setSentDate(new Date());
					msg.saveChanges();
					Transport transport = session.getTransport("smtp");
					transport.connect(host, username, password);
					// 发送信件
					transport.sendMessage(msg,msg.getRecipients(Message.RecipientType.TO));
					transport.close();
					System.out.println("发送邮件完毕!");
					return true;
				} else {
					System.out.println("没有填写收件人!");
					return false;
				}
			} else {
				System.out.println("没有填写收件人!");
				return false;
			}
		} catch(AddressException ae){
			System.out.println("地址错误");
		}catch(MessagingException me){
			
		}catch(UnsupportedEncodingException ue){
			
		}catch (Exception e) {
			System.out.println("rr");
			e.printStackTrace();
		}
		return false;
	}

	public static void main(String[] args) throws AddressException,
			UnsupportedEncodingException, MessagingException {
		List<String> filepath = new ArrayList<String>();
		filepath.add("D:\\ss.log");
		sendMail(
				"xxxxx@sina.com,sxxx@sina.com",
				"验证信息邮件", "程序验证邮件_有附件", filepath);
	}
}

 注: 要设置邮箱开通SMTP服务。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics