使用JavaMail发送邮件

来源:互联网 发布:淘宝店铺装修免费软件 编辑:程序博客网 时间:2024/05/16 06:17
package com.pb.mail;import java.util.Properties;import javax.mail.Address;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.Multipart;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;/** * 发送邮件 *  */public class Mail {private MimeMessage mimeMsg;private Session session;private Properties props;private String username;private String password;private Multipart mp;public Mail(String smtp) {setSmtpHost(smtp);createMimeMessage();}public void setSmtpHost(String hostName) {System.out.println("设置系统属性:mail.smtp.host=" + hostName);if (props == null) {props = System.getProperties();}props.put("mail.smtp.host", hostName);}public boolean createMimeMessage() {try {System.out.println("准备获取邮件会话对象!");session = Session.getDefaultInstance(props, null);} catch (Exception e) {System.out.println("获取邮件会话对象时发生错误!" + e);return false;}System.out.println("准备创建MIME邮件对象!");try {mimeMsg = new MimeMessage(session);mp = new MimeMultipart();return true;} catch (Exception e) {System.out.println("创建MIME邮件对象失败!" + e);return false;}}/** * 设置SMTP是否需要验证 */public void setNeedAuth(boolean need) {System.out.println("设置smtp身份认证:mail.smtp.auth = " + need);if (props == null)props = System.getProperties();if (need) {props.put("mail.smtp.auth", "true");} else {props.put("mail.smtp.auth", "false");}}public void setNamePass(String name, String pass) {username = name;password = pass;}/** * 设置邮件主题 */public boolean setSubject(String mailSubject) {System.out.println("设置邮件主题!");try {mimeMsg.setSubject(mailSubject);return true;} catch (Exception e) {System.err.println("设置邮件主题发生错误!");return false;}}/** * 设置邮件正文 */public boolean setBody(String mailBody) {try {BodyPart bp = new MimeBodyPart();bp.setContent("" + mailBody, "text/html;charset=GBK");mp.addBodyPart(bp);return true;} catch (Exception e) {System.err.println("设置邮件正文时发生错误!" + e);return false;}}/** * 设置发信人 */public boolean setFrom(String from) {System.out.println("设置发信人!");try {mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人return true;} catch (Exception e) {return false;}}/** * 设置收信人 */public boolean setTo(String to) {if (to == null)return false;System.out.println("设置收信人!");try {mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));return true;} catch (Exception e) {return false;}}/** * 设置抄送人 */public boolean setCopyTo(String copyto) {if (copyto == null)return false;try {mimeMsg.setRecipients(Message.RecipientType.CC, (Address[]) InternetAddress.parse(copyto));return true;} catch (Exception e) {return false;}}/** * 发送邮件 */public boolean sendOut() {try {mimeMsg.setContent(mp);mimeMsg.saveChanges();System.out.println("正在发送邮件....");Session mailSession = Session.getInstance(props, null);Transport transport = mailSession.getTransport("smtp");transport.connect((String) props.get("mail.smtp.host"), username, password);transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));System.out.println("发送邮件成功!");transport.close();return true;} catch (Exception e) {System.err.println("邮件发送失败!" + e);return false;}}/** * 调用sendOut方法完成邮件发送 */public static boolean sendAndCc(String smtp, String from, String to, String copyto,String subject, String content, String username, String password) {Mail theMail = new Mail(smtp);theMail.setNeedAuth(true); // 需要验证if (!theMail.setSubject(subject))return false;if (!theMail.setBody(content))return false;if (!theMail.setTo(to))return false;if (!theMail.setCopyTo(copyto))return false;if (!theMail.setFrom(from))return false;theMail.setNamePass(username, password);if (!theMail.sendOut())return false;return true;}}
package com.pb.mail;public class SendMail {public static void main(String[] args) {String smtp = "smtp.126.com";// smtp服务器String from = "abcdefg@126.com";// 邮件显示名称String to = "123456@qq.com";// 收件人的邮件地址,必须是真实地址String copyto = "";// 抄送人邮件地址String subject = "测试邮件";// 邮件标题String content = "你好!";// 邮件内容String username = "abcdefg";// 发件人真实的账户名String password = "123456789";// 发件人密码Mail.sendAndCc(smtp, from, to, copyto, subject, content, username, password);}}


原创粉丝点击