首页 > 代码库 > javaMail发送邮件

javaMail发送邮件

最近刚写的有关javaMail发送邮件的代码!

package test;


import java.util.Properties;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
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;


/** * 发送邮件 * @author twain * */
public class Test1 {
private MimeMessage mimeMsg;// 声明邮件对象
private Session session;// 邮件会话对象
private Properties props;// 声明系统属性
/** * 声明用于认证 的用户名和密码 */
private String username;
private String password;
private Multipart multipart;// ,声明multipart用来封装用户的标题,附件,和内容的信息


/** * 构造方法 */
public Test1(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);
multipart = 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 setNamePassword(String name, String passwrod) {
username = name;
password = passwrod;
}


/** * 设置邮箱主题 */
public boolean setSubject(String mailSubject) {
System.out.println("设置邮件主题!");
try {
mimeMsg.setSubject(mailSubject);
return true;
} catch (MessagingException e) {
System.out.println("设置邮箱主题发生错误!" + e);
return false;
}
}


/** * 设置邮件正文 */
public boolean setBody(String mailBody) {
try {
BodyPart bp = new MimeBodyPart();
bp.setContent("" + mailBody, "text/html;charset=GBK");
multipart.addBodyPart(bp);
return true;
} catch (MessagingException e) {
System.out.println("设置邮件正文时发生错误!" + e);
return false;
}
}


/** * 设置发信人 */
public boolean setForm(String form) {
System.out.println("设置发信人!");
try {
mimeMsg.setFrom(new InternetAddress(form));
return true;
} catch (Exception e) {
System.out.println("设置发信人是发生错误!" + 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) {
System.out.println("设置收信人失败!" + e);
return false;
}
}


/** * 设置抄送人 */
public boolean setCoppyTo(String coppyTo) {
if (coppyTo == null)
return false;
System.out.println("设置抄送人!");
try {
mimeMsg.setRecipients(Message.RecipientType.CC,
(Address[]) InternetAddress.parse(coppyTo));
return true;
} catch (Exception e) {
System.out.println("在设置抄送人时失败!" + e);
return false;
}
}


/** * 发送邮件 */
public boolean sendOut() {
try {
mimeMsg.setContent(multipart);
mimeMsg.saveChanges();
System.out.println("正在发送………………");
Session mailSession = Session.getDefaultInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect((String) props.getProperty("mail.smtp.host"),
username, password);
transport.sendMessage(mimeMsg,
mimeMsg.getRecipients(Message.RecipientType.TO));
System.out.println("发送成功!");
transport.close();
return true;
} catch (MessagingException e) {
System.out.println("发送失败!" + e);
return false;
}
}


/** * 调用sendOut完成邮件发生 */
public static boolean sendAddCc(String smtp, String form, String to,
String coppyTo, String subject, String content, String username,
String passwrod) {
Test1 mail = new Test1(smtp);
mail.setNeedAuth(true);// 需要验证
if (!mail.setSubject(subject))
return false;
if (!mail.setBody(content))
return false;
if (!mail.setTo(to))
return false;
if (!mail.setCoppyTo(coppyTo))
return false;
if (!mail.setForm(form))
return false;
mail.setNamePassword(username, passwrod);
if (!mail.sendOut())
return false;
return true;
}


public static void main(String[] args) {


String smtp = "mail.qq.com";// 设置smtp地址,不同的邮箱服务器的地址簿一样


String form = "xxx.qq.com";// 邮件中显示的名称


String to = "xxx@gmail.com";// 设置收件人


String coppyTo = "";// 设置抄送人


String subject = "邮箱测试";// 设置邮件主题


String content = "如果想看到发送邮件的效果,请访问轮胎天使http://www.tireangel.com,用户注册后会发送邮件到您的邮箱";// 设置邮件内容


String username = "xxx.qq.com";// 设置发件人邮箱地址,必须存在


String passwrod = "****";// 发件人邮箱密码


Test1.sendAddCc(smtp, form, to, coppyTo, subject, content, username,passwrod);


}
}