您的位置:首页 > 编程语言 > Java开发

java发送邮件

2016-02-29 19:25 495 查看
1.需要用到javax.mail怎么下载呢?百度javax.mail就会看见http://www.oracle.com/technetwork/java/index-138643.html实际上这个项目是www.java.net网站上面的项目。

下面的用javax.mail从163邮箱向qq邮箱发送邮件。

package haha;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;

public class Haha {
public static void sendMail(String fromMail, String user, String password, String toMail, String mailTitle,
String mailContent) throws Exception {
Properties props = new Properties(); // 可以加载一个配置文件
props.put("mail.smtp.host", "smtp.163.com");
Session session = Session.getInstance(props);// 根据属性新建一个邮件会话
session.setDebug(true); // 有他会打印一些调试信息。

MimeMessage message = new MimeMessage(session);// 由邮件会话新建一个消息对象
message.setFrom(new InternetAddress(fromMail));// 设置发件人的地址
message.setRecipient(Message.RecipientType.TO, new InternetAddress(toMail));
message.setSubject(mailTitle);// 设置标题
//message.setText(mailContent); // 发送 纯文本 邮件
message.setContent(mailContent, "text/html;charset=gbk"); // 发送HTML邮件,内容样式比较丰富
message.setSentDate(new Date());// 设置发信时间
message.saveChanges();// 存储邮件信息

Transport transport = session.getTransport("smtp");
transport.connect(user, password);
transport.sendMessage(message, message.getAllRecipients());// 发送邮件,其中第二个参数是所有已设好的收件人地址
transport.close();
}

public static void main(String[] args) throws Exception {
sendMail("xxxxx@163.com", "xxxxxxx@163.com", "网易邮箱密码", "收件人邮箱@qq.com", "Java Mail 测试邮件",
"<a>html 元素</a>:<b>邮件内容</b>");
}
}


2.Apache对javax.mail进行了一下封装,叫org.apache.commons.mail

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;

public class Main {

public static void main(String[] args) {
new Main();
}

Main() {
try {
HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.qq.com");
email.setSmtpPort(587);
email.setAuthentication("xxxxx@qq.com", "激活smtp功能后的验证码");
email.addTo("xxxxx@qq.com");
email.setFrom("xxxxx@qq.com");
email.setMsg("鹏哥,咱们是整着玩的,别老是想着一鸣惊人。");
email.send();
} catch (EmailException e) {
e.printStackTrace();
}
}
}

3.发邮件需要让服务器发邮件,如果是163邮箱,直接弄就行。如果是通过qq邮箱发邮件,就要进行一些设置。

  一运行,qq邮箱会告诉你去一个链接学习一下:http://service.mail.qq.com/cgi-bin/help?id=28

  上面这个链接详细解释了所有内容,可以顺便学学一些协议。

  需要激活qq邮箱的smtp功能(在qq邮箱中进行账户设置),并且端口也很重要,发送端口和接收端口不是一回事,详见http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=369
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: