java实现邮件发送

发布时间:2024-05-02 点击:109
可能在我们的日常生活中经常会出现这样的情况,当我们注册的时候会出现邮件提示注册成功,或者意见反馈确认等情况,以及在注册时候通过邮箱来验证验证码的情况
自己最近也在做一个网站,所以把自己学习的东西记录下来
1.首先我们需要一个jar包
下载地址:https://github.com/javaee/javamail/releases
2.我们以网易邮箱为例,我们需要在我们的邮箱中邮箱账号必须要开启 smtp 服务,点击邮箱页面的设置即可完成。
3. 创建一封简单的电子邮件
首先创建一个 java 工程,把下载好的 javax.mail.jar作为类库加入工程,这里不多说。
邮件创建步骤:
1.创建一个邮件对象(mimemessage);
2.设置发件人,收件人,可选增加多个收件人,抄送人,密送人;
3.设置邮件的主题(标题);
4.设置邮件的正文(内容);
5.设置显示的发送时间;
6.保存到本地。
代码实现:
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; / * javamail 版本: 1.6.0 * jdk 版本: jdk 1.7 以上(必须) */ public class main { // 发件人的 邮箱 和 密码(替换为自己的邮箱和密码) // ps: 某些邮箱服务器为了增加邮箱本身密码的安全性,给 smtp 客户端设置了独立密码(有的邮箱称为“授权码”), // 对于开启了独立密码的邮箱, 这里的邮箱密码必需使用这个独立密码(授权码)。 public static string myemailaccount = “*@163.com”; public static string myemailpassword = “”; // 发件人邮箱的 smtp 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com // 网易163邮箱的 smtp 服务器地址为: smtp.163.com public static string myemailsmtphost = “smtp.163.com”; // 收件人邮箱(替换为自己知道的有效邮箱) public static string receivemailaccount = “*@qq.com”; public static void main(string[] args) throws exception { // 1. 创建参数配置, 用于连接邮件服务器的参数配置 properties props = new properties(); // 参数配置 props.setproperty(“mail.transport.protocol”, “smtp”); // 使用的协议(javamail规范要求) props.setproperty(“mail.smtp.host”, myemailsmtphost); // 发件人的邮箱的 smtp 服务器地址 props.setproperty(“mail.smtp.auth”, “true”); // 需要请求认证 // ps: 某些邮箱服务器要求 smtp 连接需要使用 ssl 安全认证 (为了提高安全性, 邮箱支持ssl连接, 也可以自己开启), // 如果无法连接邮件服务器, 仔细查看控制台打印的 log, 如果有有类似 “连接失败, 要求 ssl 安全连接” 等错误, // 打开下面 /* … */ 之间的注释代码, 开启 ssl 安全连接。 /* // smtp 服务器的端口 (非 ssl 连接的端口一般默认为 25, 可以不添加, 如果开启了 ssl 连接, // 需要改为对应邮箱的 smtp 服务器的端口, 具体可查看对应邮箱服务的帮助, // qq邮箱的smtp(sll)端口为465或587, 其他邮箱自行去查看) final string smtpport = “465”; props.setproperty(“mail.smtp.port”, smtpport); props.setproperty(“mail.smtp.socketfactory.class”, “javax.net.ssl.sslsocketfactory”); props.setproperty(“mail.smtp.socketfactory.fallback”, “false”); props.setproperty(“mail.smtp.socketfactory.port”, smtpport); */ // 2. 根据配置创建会话对象, 用于和邮件服务器交互 session session = session.getinstance(props); session.setdebug(true); // 设置为debug模式, 可以查看详细的发送 log // 3. 创建一封邮件 mimemessage message = createmimemessage(session, myemailaccount, receivemailaccount); // 4. 根据 session 获取邮件传输对象 transport transport = session.gettransport(); // 5. 使用 邮箱账号 和 密码 连接邮件服务器, 这里认证的邮箱必须与 message 中的发件人邮箱一致, 否则报错 // // ps_01: 成败的判断关键在此一句, 如果连接服务器失败, 都会在控制台输出相应失败原因的 log, // 仔细查看失败原因, 有些邮箱服务器会返回错误码或查看错误类型的链接, 根据给出的错误 // 类型到对应邮件服务器的帮助网站上查看具体失败原因。 // // ps_02: 连接失败的原因通常为以下几点, 仔细检查代码: // (1) 邮箱没有开启 smtp 服务; // (2) 邮箱密码错误, 例如某些邮箱开启了独立密码; // (3) 邮箱服务器要求必须要使用 ssl 安全连接; // (4) 请求过于频繁或其他原因, 被邮件服务器拒绝服务; // (5) 如果以上几点都确定无误, 到邮件服务器网站查找帮助。 // // ps_03: 仔细看log, 认真看log, 看懂log, 错误原因都在log已说明。 transport.connect(myemailaccount, myemailpassword); // 6. 发送邮件, 发到所有的收件地址, message.getallrecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人 transport.sendmessage(message, message.getallrecipients()); // 7. 关闭连接 transport.close(); } / * 创建一封只包含文本的简单邮件 * * @param session 和服务器交互的会话 * @param sendmail 发件人邮箱 * @param receivemail 收件人邮箱 * @return * @throws exception */ public static mimemessage createmimemessage(session session, string sendmail, string receivemail) throws exception { // 1. 创建一封邮件 mimemessage message = new mimemessage(session); // 2. from: 发件人(昵称有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改昵称) message.setfrom(new internetaddress(sendmail, “你大爷还是你大爷”, “utf-8”)); // 3. to: 收件人(可以增加多个收件人、抄送、密送) message.setrecipient(mimemessage.recipienttype.to, new internetaddress(receivemail, “xx用户”, “utf-8”)); // 4. subject: 邮件主题(标题有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改标题) message.setsubject(“我是你大爷”, “utf-8”); // 5. content: 邮件正文(可以使用html标签)(内容有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改发送内容) message.setcontent(“陈晶晶,你好,我是你大爷”, “text/html;charset=utf-8”); // 6. 设置发件时间 message.setsentdate(new date()); // 7. 保存设置 message.savechanges(); return message; } }
如果,你对上面的内容还有疑问,推荐选择西部数码企业云邮箱!有专人协助您解答邮箱疑问。
西部数码企业云邮箱,采用分布式集群架构,数据多份写入,规避单点故障,全球智能中继,更安全稳定。企业邮箱无限空间,极速收发,支持层级子文件夹,邮件撤回,日程微信通知、邮件监管、自定义工作报告功能、邮件归档、ssl部署等几十项功能。而且价格实惠,还可以免费试用!
企业邮箱免费试用入口:https://www.west.cn/services/mail/


蚂蚁集团A股发行价确定!到底什么发行价?
百度云服务器靠谱吗
嘉兴网站建设公司解答什么是企业盈利的网页设计服务
域名.cc具备什么特点?有哪些适合金融行业的域名?
忘记续费?谷歌搜索阿根廷域名被个人抢注
嘉兴网站制作需要多少钱,中小企业网站建设从哪些方面入手?
云服务器哪家好华为
域名投资网的介绍以及推荐