用java代码写邮件,已经测试成功!

xiaoxiao2021-02-28  109

1、首先创建一个继承自javax.mail.Authenticator的具体类,重写里面的getPasswordAuthentication()方法;

2、创建Properties对象prop,prop中存放smtp服务器的地址等参数;

3、通过prop对象和继承自javax.mail.Authenticator的具体类对象authenticator创建javax.mail.session对象session,相当于登录邮箱一样;

4、构建邮件内容,创建javax.mail.internet.MimeMessage对象,指定发件人、收件人、邮件主题、邮件内容等;

5、使用javax.mail.Transport工具类发邮件。

具体的实例如下,一般的邮箱都可以,但gmail邮箱作为收件邮箱时会卡住,一次成功。

继承自javax.mail.Authenticator的具体类

package com.controller; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; /**   *   * 用作服务器邮箱登录校验   */ public class MailAuthenticator extends Authenticator{     //登录邮箱的用户名 private String username; //密码 private String password; public MailAuthenticator(String username, String password) { this.username = username; this.password = password; }     @Override     protected PasswordAuthentication getPasswordAuthentication() {         return new PasswordAuthentication(username,password);         } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }

//发送邮件的主类

package com.controller; import java.util.List; import java.util.Properties; import javax.mail.AuthenticationFailedException; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessage.RecipientType; /**   * 发送邮件的主类  */ public class SendMail {     //发送邮件的props文件 private final transient Properties props=System.getProperties(); //邮件服务器登录验证 private transient MailAuthenticator authenticator; //邮箱session private transient Session session; /** * 初始化发送邮件 * @param smtpHostName邮件服务器地址 * @param username发送邮件的用户名 * @param password密码 */ public SendMail(final String smtpHostName,final String username,final String password){ init(username,password,smtpHostName); } /** * 初始化发送邮件 * @param username 发送邮件的用户名 * @param password 密码 */ public SendMail(final String username,final String password){ //通过邮箱地址解析出smtp服务器,对大多数邮箱都管用 final String smtpHostName="smtp."+username.split("@")[1]; init(username,password,smtpHostName); } /** * 初始化 * @param username 发送邮件的用户名 * @param password 密码 * @param smtpHostName SMTP主机地址 */ private void init(String username, String password, String smtpHostName) { //初始化props props.put("mail.smtp.auth", "true"); props.put("mail.smtp.host", smtpHostName); //验证 authenticator=new MailAuthenticator(username,password); //创建session session=Session.getInstance(props,authenticator); } /** * 发送邮件 * @param recipient收件人邮箱地址 * @param subject邮件主题 * @param content邮件内容 * @throws MessagingException  * @throws AddressException  */ public void send(String recipient,String subject,Object content) throws AddressException, MessagingException{ //创建mime类型的邮件 final MimeMessage message=new MimeMessage(session); //设置发信人 message.setFrom(new InternetAddress(authenticator.getUsername())); //设置收件人 message.setRecipient(RecipientType.TO, new InternetAddress(recipient)); //设置主题 message.setSubject(subject); //设置邮件内容 message.setContent(content.toString(), "text/html;charset=utf-8"); //发送 Transport.send(message,message.getRecipients(RecipientType.TO)); } /** * 群发邮件 * @param recipients 收件人们 * @param subject 主题 * @param content 内容 * @throws AddressException * @throws MessagingException */ public void send(List<String> recipients,String subject,Object content) throws AddressException, MessagingException{ //创建mime类型的邮件 final MimeMessage message=new MimeMessage(session); //设置发件人 message.setFrom(new InternetAddress(authenticator.getUsername())); //设置收件人们 InternetAddress[] addresses=new InternetAddress[recipients.size()]; for(int i=0;i<recipients.size();i++){ addresses[i]=new InternetAddress(recipients.get(i)); } message.setRecipients(RecipientType.TO,addresses); //设置主题 message.setSubject(subject); //设置邮件内容 message.setContent(content.toString(), "text/html;charset=utf-8"); //发送 Transport.send(message); } //主函数 public static void main(String[] args) throws AddressException, MessagingException,AuthenticationFailedException{ //发件人的地址和密码 SendMail sm=new SendMail("发件人邮箱","发件人密码"); //收件人地址、邮件主题、邮件内容 sm.send("收件人地址", "呵呵呵", "哈哈哈哈哈!"); } }

转载请注明原文地址: https://www.6miu.com/read-68360.html

最新回复(0)