java中利用commons-email-1.2.jar实现简单的发邮件

1、首先引入commons-email-1.2.jar包

2、直接看代码吧commons-email-1.2.jar中已经为我们已经封装好了方法

a、先来一个简单的不能发附件的

public class TestCommonEmail {
public static void main(String[] args) {
SimpleEmail simpleEmail = new SimpleEmail();
// 设置使用发送邮件的邮件服务器若使用qq是smtp.qq.com前提是qq已经开通smtp服务
simpleEmail.setHostName("smtp.163.com");

               //防止中文乱码
simpleEmail.setCharset("utf-8");


try {
// 收件人信箱合和收件人别名
simpleEmail.addTo("xxx@qq.com", "颜色不一样的烟火");
// 发件人信箱和密码
simpleEmail.setAuthentication("xxx@163.com",
"xxx");

// 发件人信箱和别名 这个邮箱的要与设置使用邮件服务器相对应,意思是不能用qq的smtp发送网易的邮件
simpleEmail.setFrom("xxx@163.com", "网易邮箱");
simpleEmail.setSubject("subject");
simpleEmail.setMsg("hello world! 你好,世界!");
simpleEmail.send();


} catch (EmailException e) {
// TODO Auto-generated catch block
System.out.println("发送失败");
e.printStackTrace();
}
System.out.println("发送成功");
}


}

b、发送邮件带附件

public class TestCommonEmail {
public static void main(String[] args) {
 
         MultiPartEmail simpleEmail = new MultiPartEmail();
// 设置使用发送邮件的邮件服务器
simpleEmail.setHostName("smtp.163.com");
simpleEmail.setCharset("utf-8");


try {
// 收件人信箱合和收件人别名
simpleEmail.addTo("xxx@qq.com", "颜色不一样的烟火");
// 发件人信箱和密码
simpleEmail.setAuthentication("xxx@163.com",
"xxx");


// 发件人信箱和别名 这个邮箱的要与设置使用邮件服务器相对应
simpleEmail.setFrom("xxx@163.com", "网易邮箱");
simpleEmail.setSubject("subject");
simpleEmail.setMsg("hello world! 你好,世界!");
        EmailAttachment emailAttachment = new EmailAttachment();

                       //附件放在项目的根目录下
emailAttachment.setPath("naaomei.jpeg");
simpleEmail.attach(emailAttachment);


simpleEmail.send();


} catch (EmailException e) {
// TODO Auto-generated catch block
System.out.println("发送失败");
e.printStackTrace();
}
System.out.println("发送成功");
}


}

c、对发送邮件的方法进行封装优化所有的发件人信息和email_host放在配置文件中

config.properties

email_host=smtp.163.com
email_from=xxx@163.com
email_password=xxx


读取配置文件中属性的类PropertiesUtil.java

public class PropertiesUtil {
private static InputStream inputStream = null;


public static String readStringValue(String propertyName) throws Exception {
String _propertyName = "";
// classloader默认加载的就是以classpath开始的绝对路径不能加"/",否则找不到文件
inputStream = PropertiesUtil.class.getClassLoader()
.getResourceAsStream("config.properties");
System.out.println(inputStream.available());
Properties p = new Properties();
System.out.println("p:" + p);
try {
p.load(inputStream);
} catch (IOException e1) {
inputStream.close();
}
_propertyName = p.get(propertyName).toString();
inputStream.close();
return _propertyName;
}

发送各种邮件EmailUtil.java


public class EmailUtil {


public static void sendmail(String to, String subject, String msg)
throws Exception {
HtmlEmail email = new HtmlEmail();
email.setHostName(PropertiesUtil.readStringValue("email_host"));
email.setCharset("utf-8");
email.addTo(to);
email.setFrom(PropertiesUtil.readStringValue("email_from"));
email.setAuthentication(PropertiesUtil.readStringValue("email_from"),
PropertiesUtil.readStringValue("email_password"));
email.setSubject(subject);
email.setHtmlMsg(msg);
email.send();
}


public static void sendmailWithAttachment(String to, String subject,
String msg, EmailAttachment[] attachs) throws Exception {
HtmlEmail email = new HtmlEmail();
email.setHostName(PropertiesUtil.readStringValue("email_host"));
email.setCharset("utf-8");
email.addTo(to);
email.setFrom(PropertiesUtil.readStringValue("email_from"));
email.setAuthentication(PropertiesUtil.readStringValue("email_from"),
PropertiesUtil.readStringValue("email_password"));
email.setSubject(subject);
email.setHtmlMsg(msg);
for (int i = 0; i < attachs.length; i++) {
email.attach(attachs[i]);
}
email.send();
}


public static void sendMultiPartMail(String to, String subject, String msg,
String fileName) throws Exception {


// 创建附件邮件对象


MultiPartEmail multipartMail = new MultiPartEmail();
multipartMail.setCharset("utf-8");
multipartMail.setHostName(PropertiesUtil.readStringValue("email_host"));
// 创建一个附件(附件可以是一个本地路径也可以是一个网络url)
EmailAttachment emailAttachment = new EmailAttachment();
emailAttachment.setPath(fileName);
emailAttachment.setDescription(EmailAttachment.ATTACHMENT);
emailAttachment.setDescription("This is a attach test!");
try {
System.out.println("email_from======="
+ PropertiesUtil.readStringValue("email_from"));
multipartMail.setFrom(PropertiesUtil.readStringValue("email_from"));
multipartMail.setAuthentication(
PropertiesUtil.readStringValue("email_from"),
PropertiesUtil.readStringValue("email_password"));
multipartMail.addTo(to);
// multipartMail.addCc("");
multipartMail.setSubject(subject);
multipartMail.setMsg(msg);
multipartMail.attach(emailAttachment);
// 添加附件
// multipartMail.attach(emailAttachment);
// multipartMail.attach(emailAttachment);
// multipartMail.attach(emailAttachment);
// multipartMail.attach(emailAttachment);
// 发送
multipartMail.send();
} catch (Exception e) {
// TODO Auto-generated catch
e.printStackTrace();


}


}


public static void main(String[] args) throws Exception {
System.out.println("发送邮件开始");
EmailUtil.sendmail("xxx@qq.com", "hello", "nice to meet you!");
// EmailUtil.sendMultiPartMail("xm.163.happy@163.com", "nihaodjfajs",
// "111sdfgsdfgsdfgsd","D:/text.pdf");
// EmailAttachment[] emailAttachments = new EmailAttachment[2];
// EmailAttachment emailAttachment = new EmailAttachment();
// emailAttachment.setPath("D:/text1.pdf");
// emailAttachments[0] = emailAttachment;
// EmailAttachment agreement = new EmailAttachment();
// agreement.setPath("D:/text.pdf");
/*
* agreement.setDisposition(EmailAttachment.ATTACHMENT);
* agreement.setDescription("订房业务合作协议(上海多途国旅)");
* agreement.setName(MimeUtility.encodeText("订房业务合作协议(上海多途国旅).doc"));
*/
// emailAttachments[1] = agreement;
// EmailUtil.sendmailWithAttachment("xm.163.happy@163.com",
// "newnewnihaodjfajs", "111sdfgsdfgsdfgsd", emailAttachments);
System.out.println("success");
}
}





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值