我们可以使用gmail的SMTP服务器发送电子邮件。如果你没有任何SMTP服务器且可靠, 那就很好。在这里, 我们将学习如何通过SSL(安全套接字层)通过gmail服务器发送电子邮件。如果你通过gmail服务器发送电子邮件, 则SSL基本用于安全性。
为了更好地理解此示例, 请首先学习使用JavaMail API发送电子邮件的步骤。 |
要使用JavaMail API发送电子邮件, 你需要加载两个jar文件:mail.jar activation.jar下载这些jar文件(或)到Oracle网站下载最新版本。 |
禁用防病毒软件, 例如avast等, 因为它可能会中断你的代码以发送电子邮件。
通过具有SSL的Gmail服务器发送电子邮件的示例
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
class Mailer{
public static void send(String from, String password, String to, String sub, String msg){
//Get properties object
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
//get Session
Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(from, password);
}
});
//compose message
try {
MimeMessage message = new MimeMessage(session);
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(sub);
message.setText(msg);
//send message
Transport.send(message);
System.out.println("message sent successfully");
} catch (MessagingException e) {throw new RuntimeException(e);}
}
}
public class SendMailSSL{
public static void main(String[] args) {
//from, password, to, subject, message
Mailer.send("from@gmail.com", "xxxxx", "to@gmail.com", "hello srcmini", "How r u?");
//change from, password and to
}
}
如你在上面的示例中看到的, 需要对用户标识和密码进行身份验证。如该程序所示, 你可以轻松发送电子邮件, 但可以相应地更改用户名和密码。让我们看看如何通过简单的技术再次运行它:
加载jar文件 | c:\> set classpath = mail.jar; activation.jar;。; |
编译源文件 | c:\> javac SendMailSSL.java |
run by | c:\> Java SendMailSSL |
解决AuthenticationFailedException
单击此链接, 然后单击打开单选按钮, 以允许用户从未知位置发送邮件。 https://www.google.com/settings/security/lesssecureapps
评论前必须登录!
注册