基于JavaMail实现邮件发送
程序员文章站
2022-06-05 08:38:32
通过javamail 实现发送邮件,供大家参考,具体内容如下
注意:服务器有些端口是没有开放的 需要去开放端口。 有些邮箱是需要开启对应授权服务的。
1.maven依赖...
通过javamail 实现发送邮件,供大家参考,具体内容如下
注意:服务器有些端口是没有开放的 需要去开放端口。 有些邮箱是需要开启对应授权服务的。
1.maven依赖:
<!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api --> <dependency > <groupid >javax.mail </groupid > <artifactid >mail </artifactid > <version >1.4.5 </version > </dependency > <dependency > <groupid >com.sun.mail </groupid > <artifactid >javax.mail </artifactid > </dependency >
2.新建个实体类 用来保存信息
import java.util.properties; public class mailsenderinfo { // 发送邮件的服务器的ip(或主机地址) private string mailserverhost; // 发送邮件的服务器的端口 private string mailserverport; // 发件人邮箱地址 private string fromaddress; // 收件人邮箱地址 private string toaddress; // 登陆邮件发送服务器的用户名 private string username; // 登陆邮件发送服务器的密码 private string password; // 是否需要身份验证 private boolean validate = true; // 邮件主题 private string subject; // 邮件的文本内容 private string content; // 邮件附件的文件名 private string[] attachfilenames; public properties getproperties() { properties p = new properties(); p.put("mail.smtp.host", this.mailserverhost); p.put("mail.smtp.port", this.mailserverport); //设置是否安全验证,默认为false,一般情况都设置为true p.put("mail.smtp.auth", "true"); p.put("mail.smtp.starttls.enable","true"); p.put("mail.smtp.enablessl.enable","true"); return p; } public string getmailserverhost() { return mailserverhost; } public void setmailserverhost(string mailserverhost) { this.mailserverhost = mailserverhost; } public string getmailserverport() { return mailserverport; } public void setmailserverport(string mailserverport) { this.mailserverport = mailserverport; } public boolean isvalidate() { return validate; } public void setvalidate(boolean validate) { this.validate = validate; } public string[] getattachfilenames() { return attachfilenames; } public void setattachfilenames(string[] filenames) { this.attachfilenames = filenames; } public string getfromaddress() { return fromaddress; } public void setfromaddress(string fromaddress) { this.fromaddress = fromaddress; } public string getpassword() { return password; } public void setpassword(string password) { this.password = password; } public string gettoaddress() { return toaddress; } public void settoaddress(string toaddress) { this.toaddress = toaddress; } public string getusername() { return username; } public void setusername(string username) { this.username = username; } public string getsubject() { return subject; } public void setsubject(string subject) { this.subject = subject; } public string getcontent() { return content; } public void setcontent(string textcontent) { this.content = textcontent; } }
3.创建一个验证器
import javax.mail.authenticator; import javax.mail.passwordauthentication; /** * 邮件用户名和密码认证器 */ public class myauthenticator extends authenticator{ string username = null; string password = null; public myauthenticator() { } public myauthenticator(string username, string password) { this.username = username; this.password = password; } protected passwordauthentication getpasswordauthentication() { return new passwordauthentication(username, password); } }
4.在调用的地方给实体类赋值
private void email(httpsession session, string email) { // 设置邮件服务器信息 mailsenderinfo mailinfo = new mailsenderinfo(); mailinfo.setmailserverhost("smtp-mail.outlook.com");// 发送邮件的服务器的ip(或主机地址) mailinfo.setmailserverport("587");//有些端口在服务器上是没开放的 这里需要注意下 mailinfo.setvalidate(true); // 邮箱用户名(根据自己情况设置) 这里可以多弄几个邮箱过来 避免邮箱账号需要验证 或者被当成垃圾邮件封号 a失败就用b mailinfo.setusername("此处填写跟上面发送邮件服务器对应的邮箱"); // 邮箱密码(根据自己情况设置) mailinfo.setpassword("这是你的密码"); // 发件人邮箱(根据自己情况设置,如果你没对邮箱进行特别设置,应该和邮箱用户名一致) mailinfo.setfromaddress("这里跟上面一样"); // 收件人邮箱(根据自己情况设置) mailinfo.settoaddress(email); // 邮件标题 mailinfo.setsubject("我是标题"); // 邮件内容 mailinfo.setcontent("我是内容,正经的内容不是垃圾邮箱"); // 发送邮件 simplemailsender sms = new simplemailsender(); // 发送文体格式 sms.sendtextmail(mailinfo); }
5.这里才是真正的发送邮件
public class simplemailsender { public boolean sendtextmail(mailsenderinfo mailinfo) { // 判断是否需要身份认证 myauthenticator authenticator = null; properties pro = mailinfo.getproperties(); if (mailinfo.isvalidate()) { // 如果需要身份认证,则创建一个密码验证器 authenticator = new myauthenticator(mailinfo.getusername(), mailinfo.getpassword()); } // 根据邮件会话属性和密码验证器构造一个发送邮件的session session sendmailsession = session.getdefaultinstance(pro, authenticator); try { // 根据session创建一个邮件消息 message mailmessage = new mimemessage(sendmailsession); // 创建邮件发送者地址 address from = new internetaddress(mailinfo.getfromaddress()); // 设置邮件消息的发送者 mailmessage.setfrom(from); // 创建邮件的接收者地址,并设置到邮件消息中 address to = new internetaddress(mailinfo.gettoaddress()); mailmessage.setrecipient(message.recipienttype.to, to); // 设置邮件消息的主题 mailmessage.setsubject(mailinfo.getsubject()); // 设置邮件消息发送的时间 mailmessage.setsentdate(new date()); // 设置邮件消息的主要内容 string mailcontent = mailinfo.getcontent(); mailmessage.settext(mailcontent); mailmessage.savechanges(); // 发送邮件 transport.send(mailmessage); return true; } catch (messagingexception ex) { ex.printstacktrace(); } return false; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: mysql 开发基础系列21 事务控制和锁定语句(下)
下一篇: 卖一个保险能赚多少钱?