赞
踩
- import javax.mail.*;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeMessage;
- import java.util.Properties;
-
- public class JavaMail {
- private static final String SMTP_SERVER = "smtp.example.com";
- private static final String USERNAME = "";
- private static final String PASSWORD = "";
-
- private static final String EMAIL_FROM = "from@example.com";
- private static final String EMAIL_TO = "to@example.com";
- private static final String EMAIL_SUBJECT = "Test Send Email";
- private static final String EMAIL_TEXT = "Hello World";
-
- public static void main(String[] args) {
-
- Properties prop = System.getProperties();
- prop.put("mail.smtp.host", SMTP_SERVER);
- prop.put("mail.smtp.auth", "true");
- prop.put("mail.smtp.port", "587");
- prop.put("mail.smtp.starttls.enable", "true");
-
- Session session = Session.getInstance(prop, new javax.mail.Authenticator() {
- protected PasswordAuthentication getPasswordAuthentication() {
- return new PasswordAuthentication(USERNAME, PASSWORD);
- }
- });
-
- try {
- Message message = new MimeMessage(session);
- message.setFrom(new InternetAddress(EMAIL_FROM));
- message.setRecipients(
- Message.RecipientType.TO, InternetAddress.parse(EMAIL_TO));
- message.setSubject(EMAIL_SUBJECT);
- message.setText(EMAIL_TEXT);
-
- Transport.send(message);
-
- System.out.println("Mail successfully sent");
-
- } catch (MessagingException e) {
- e.printStackTrace();
- }
- }
- }
在这段代码中,SMTP_SERVER
是 SMTP 服务器地址,USERNAME
和 PASSWORD
是邮件发送方的账户信息。
下面来讲解一下我们常用的几个邮件发送端口25/465/587
下面来讲解一下properties中各参数用法,注意这里需要配合具体的端口使用
使用465端口时,properties配置如下:
- props.put("mail.smtps.host", "smtp.example.com"); //smtp主机地址
- props.put("mail.smtps.port", "465"); //端口号
- props.put("mail.smtps.auth", "true"); //允许身份验证
- props.put("mail.smtps.ssl.enable", "true"); //启用ssl协议
并且在创建Transport的时候需要特别指明smtps协议类型
Transport transport = session.getTransport("smtps");
使用587端口时,properties配置如下:
- props.put("mail.smtps.host", "smtp.example.com"); //smtp主机地址
- props.put("mail.smtps.port", "587"); //端口号
- props.put("mail.smtps.auth", "true"); //允许身份验证
- props.put("mail.smtp.starttls.required", "true"); //允许使用starttls协议
- props.put("mail.smtp.starttls.enable", "true"); //启用starttls协议
如果在调试过程中出现异常,或者方法执行了,没有报错也没有成功发送邮件,我们可以在properties中开启debug模式来帮助我们快速排查问题
props.put("mail.debug", "true");
这里举一个经常出现的问题:Got bad greeting from SMTP host: smtp.xxx.com, port: 587, response: [EOF]
这个错误的意思是与邮件服务连接错误,这时候我们可以通过telnet命名检查我们的服务器与对方服务的连接情况,如果telnet返回失败,则可尝试465端口。
今天的分享就到这里啦,祝大家编码愉快
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。