记录项目里面用到的几个给国外邮箱发邮件的代码

一些说明:

这几个都可以正常发邮件,但是免费的每天都会有限制,发多了就会黑名单。。。

最终选择了exchange付费的版本,每天可以发1万条邮件,也不是很贵,基础的32一个月的就可以了

 

import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import com.sun.mail.smtp.SMTPTransport;
import microsoft.exchange.webservices.data.core.ExchangeService;
import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
import microsoft.exchange.webservices.data.core.enumeration.property.BodyType;
import microsoft.exchange.webservices.data.core.service.item.EmailMessage;
import microsoft.exchange.webservices.data.credential.ExchangeCredentials;
import microsoft.exchange.webservices.data.credential.WebCredentials;
import microsoft.exchange.webservices.data.property.complex.MessageBody;
import javax.mail.Session;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Transport;public class SendHtmlMail {public static void main(String[] args) {String to = "******@gmail.com";StringBuffer theMessage = new StringBuffer();theMessage.append("<!DOCTYPE html><html lang='en'><head><meta charset='UTF-8'><title>Title</title></head><body>测试一哈</body></html>");sendMessageByExchange("***","***","Test",to,theMessage.toString());}//Exchange服务发送public static int sendMessageByExchange(String username, String password,String subject, String to,String bodyText){ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);ExchangeCredentials credentials = new WebCredentials(username,password);service.setCredentials(credentials);try {service.setUrl(new URI("https://smtp.office365.com/EWS/exchange.asmx"));EmailMessage msg = new EmailMessage(service);msg.setSubject(subject);MessageBody body = MessageBody.getMessageBodyFromText(bodyText);body.setBodyType(BodyType.HTML);msg.setBody(body);msg.getToRecipients().add(to);msg.send();return 1;} catch (URISyntaxException e) {e.printStackTrace();return 0;} catch (Exception e) {e.printStackTrace();return 0;}}//MG服务发送public static int sendMessageByMG(String from, String password, String to, String content, String sender,String title) throws UnsupportedEncodingException{try {Properties props = System.getProperties();props.put("mail.smtps.host", "smtp.mailgun.org");props.put("mail.smtps.auth", "true");Session session = Session.getInstance(props, null);Message msg = new MimeMessage(session);msg.setFrom(new InternetAddress(from));InternetAddress[] addrs = InternetAddress.parse(to, false);msg.setRecipients(Message.RecipientType.TO, addrs);msg.setSubject(MimeUtility.encodeText(title, "gb2312", "B"));msg.setSentDate(new Date());msg.setContent(content, "text/html;charset=gb2312");SMTPTransport t = (SMTPTransport) session.getTransport("smtps");t.connect("smtp.mailgun.org", from, password);t.sendMessage(msg, msg.getAllRecipients());System.out.println("To: " + to + "Response: " + t.getLastServerResponse());t.close();return 1;} catch (AddressException e) {e.printStackTrace();return 0;} catch (MessagingException e) {e.printStackTrace();return 0;}}//outlook服务发送public static int sendMessageByOutLook(String from, String password, String to, String content, String sender,String title) throws MessagingException, java.io.UnsupportedEncodingException {try {Properties props = new Properties();// 开启debug调试props.setProperty("mail.debug", "true"); // false// 发送服务器需要身份验证props.setProperty("mail.smtp.auth", "true");// 设置邮件服务器主机名props.setProperty("mail.host", "smtp.office365.com");// 发送邮件协议名称props.setProperty("mail.transport.protocol", "smtp");props.setProperty("mail.smtp.port", "587");props.put("mail.smtp.starttls.enable", "true");// 设置环境信息Session session = Session.getInstance(props);InternetAddress toAddress = new InternetAddress(to);// 创建邮件对象MimeMessage testMessage = new MimeMessage(session);testMessage.setFrom(new InternetAddress(from,sender));testMessage.addRecipient(javax.mail.Message.RecipientType.TO, toAddress);testMessage.setSentDate(new java.util.Date());testMessage.setSubject(MimeUtility.encodeText(title, "gb2312", "B"));testMessage.setContent(content, "text/html;charset=gb2312");Transport transport = session.getTransport();// 连接邮件服务器transport.connect(from, password);// 发送邮件transport.sendMessage(testMessage, testMessage.getAllRecipients());// 关闭连接transport.close();System.out.println("Message sent to " + to + " success!");return 1;} catch (Exception e) {e.printStackTrace();return 0;}}//gmail服务发送public static int sendMessageByGmail(String from, String password, String to, String content, String sender, String title)throws MessagingException, java.io.UnsupportedEncodingException {try {// Step 1: Configure the mail sessionString host = "smtp.gmail.com";String port = "465";System.out.println("Configuring mail session for: " + host);java.util.Properties props = new java.util.Properties();props.setProperty("mail.smtp.auth", "true");// 指定是否需要SMTP验证props.put("mail.transport.protocol", "smtp");props.put("mail.smtp.user", from);props.put("mail.smtp.host", host);props.put("mail.smtp.starttls.enable", "true");props.put("mail.smtp.debug", "true");props.put("mail.smtp.auth", "true");props.put("mail.smtp.port", port);props.put("mail.smtp.timeout", "5000");props.put("mail.smtp.socketFactory.port", port);props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");props.put("mail.smtp.socketFactory.fallback", "false");Session mailSession = Session.getDefaultInstance(props);mailSession.setDebug(false);// 是否在控制台显示debug信息// Step 2: Construct the messageSystem.out.println("Constructing message -  from=" + from + "  to=" + to);InternetAddress fromAddress = new InternetAddress(from, sender);InternetAddress toAddress = new InternetAddress(to);MimeMessage testMessage = new MimeMessage(mailSession);testMessage.setFrom(fromAddress);testMessage.addRecipient(javax.mail.Message.RecipientType.TO, toAddress);testMessage.setSentDate(new java.util.Date());testMessage.setSubject(MimeUtility.encodeText(title, "gb2312", "B"));testMessage.setContent(content, "text/html;charset=gb2312");System.out.println("Message constructed");// Step 3: Now send the messageTransport transport = mailSession.getTransport("smtps");transport.connect(host, Integer.valueOf(port), from, password);transport.sendMessage(testMessage, testMessage.getAllRecipients());transport.close();System.out.println("Message sent to " + to + " success!");return 1;} catch (NumberFormatException e) {e.printStackTrace();return 0;}}}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/49831.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaMail邮件发送不成功的那些坑人情况及分析说明(巨坑跳出专用姿势)

https://blog.csdn.net/xyw591238/article/details/69530950 前言 JavaMail的使用本身并不难&#xff0c;网上有不少案例&#xff0c;简单易懂&#xff0c;而且有详细的中文注解。但是由于JavaMail的机制设置不够完善&#xff0c;特别是异常出错时的参考信息太少&#xff0c;给…

Python通过发邮件通知自己电脑被入侵

我对IT技术有着狂热的追求&#xff0c;虽然现在很渣&#xff0c;但是我有颗钻研的心&#xff0c;例外我还比较喜欢看小说&#xff0c;相信看过最强黑客的人对里面的黑客的技术佩服得无以复加&#xff0c;黑客一般对自己的电脑数据都比较在意&#xff0c;一般都会设置些密码等并…

如何在线伪造邮箱发件人,用任意邮箱发送邮件

今天邮箱收到一封自己域名发过来的邮件&#xff0c;但是询问当事人说并没有发送相关邮件&#xff0c;于是去百度了下&#xff0c;看是否可以伪造发件人&#xff0c;于是找到一个网站 http://tool.chacuo.net/mailanonymous&#xff0c;这个网站可以用任意的邮箱地址发邮件&…

单播通信、主播通信和广播通信

单播 简介 单播&#xff08;unicast&#xff09;是指封包在计算机网络的传输中&#xff0c;目的地址为单一目标的一种传输方式。每次只有两个实体相互通信&#xff0c;发送端和接收端都是唯一确定的。它是现今网络应用最为广泛&#xff0c;通常所使用的网络协议或服务大多采用…

Qt 之图形(转换)

作者&#xff1a; 一去、二三里 个人微信号&#xff1a; iwaleon 微信公众号&#xff1a; 高效程序员 QTransform 用于指定坐标系的 2D 转换 - 平移、缩放、扭曲&#xff08;剪切&#xff09;、旋转或投影坐标系。绘制图形时&#xff0c;通常会使用。 QTransform 与 QMatrix 不…

全网最全!!Qt实现图片旋转及图片旋转动画的几种方式

实现图片旋转的两种方式 第一种方案 使用 QPixmap 的 transformed 函数来实现旋转&#xff0c;这个函数默认是以图片中心为旋转点&#xff0c;不能设置旋转的中心点&#xff0c;使用如下&#xff1a; QMatrix matrix; matrix.rotate(45);QLabel *Label new QLabel(); Label-…

网页特效——女儿国国王

目录 &#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&#x1f49d;&…

不使用插件,小程序也能完整的渲染富文本(视频展现,图片自适应)

用过小程序rict-text的帅哥靓女们&#xff08;说的就是正在看文章的你&#xff09;都知道&#xff0c;rich-text是无法解析富文本中的video标签的&#xff0c;本文教你如何优雅的在不使用插件的情况下完整的渲染富文本 首先是富文本图片自适应的问题 当我们从后端拿到富文本数…

让AI替你打工?CHATGPT提升开发效率

1 需求分析 提取需求关键点 ChatGPT 通过对需求文档的分析&#xff0c;自动提取关键需求和功能点&#xff0c;方便开发团队更好地理解项目需求。 2 技术方案 大表更新方案 在某支付业务中&#xff0c;有一个大表4000万行数据&#xff0c;使用的 mysqlA5.6 的版本&#xff…

应聘求职自荐信优秀范文5篇

应聘求职自荐信优秀范文篇1 尊敬的领导&#xff1a; 您好!衷心的感谢您在百忙之中翻阅我的这份材料&#xff0c;并祝愿贵单位事业欣欣向荣&#xff0c;蒸蒸日上! 我是哈尔滨理工大学测控技术及通信工程学院________届毕业生&#xff0c;自从今日大学之后&#xff0c;高考后的轻…

如何写出一份优秀的简历和求职信?

写一份优秀的简历和求职信是成功求职的重要一步。 01、简历 突出重点信息&#xff1a;把最重要的信息放在简历的前面&#xff0c;例如您的工作经验和教育背景等。 使用简明扼要的语言&#xff1a;在简历中使用简短的句子和简明扼要的语言&#xff0c;让招聘者能够快速了解您的…

公司计算机程序员英语怎么说,计算机程序员英文求职信范文模板

计算机程序员英文求职信范文模板 Dear Mr. Arline, I would like to be considered as a candidate for the assistant computer programmer position advertised in the Philadelphia Inquirer on April 28, 2004. I’m currently finishing my degree in Computer Science at…

写一份好的求职简历,让面试官对你刮目相看

简历是一块敲门石&#xff0c;但这块敲门石是什么材质的&#xff0c;恐怕见仁见智。那么什么样的简历才能是一块优质敲门石呢&#xff0c;下面的一些个人见解&#xff0c;希望能给正在或正准备寻找更好发展机会的测试工程师们有所帮助。 一、针对在测试行业中已经有所感悟的人&…

【重要】2023年上半年有三AI新课程规划出炉,讲师持续招募中!

2023年正式起航&#xff0c;想必大家都已经完全投入到了工作状态中&#xff0c;有三AI平台今年将在已有内容的基础上&#xff0c;继续进行新课程开发&#xff0c;本次我们来介绍今年上半年的课程计划&#xff0c;以及新讲师招募计划。 2023年新上线课程 我们平台的课程当前分为…

在微信上部署GPT-4.0!

自从OpenAI开放api以后&#xff0c;使得基于GPT的各类二次开发的应用逐渐多了起来。笔者也在前几天也刚刚收到了GPT-4的api使用资格。 由于众所周知的原因&#xff0c;在OpenAI官网使用GPT多少有点不那么顺畅。笔者曾经尝试过一些本地化部署个人GPT的项目&#xff0c;比如基于C…

什么是LoRA模型,如何使用和训练LoRA模型?你想要的都在这!

什么是LoRA模型 LoRA的全称是LoRA: Low-Rank Adaptation of Large Language Models&#xff0c;可以理解为stable diffusion&#xff08;SD)模型的一种插件&#xff0c;和hyper-network&#xff0c;controlNet一样&#xff0c;都是在不修改SD模型的前提下&#xff0c;利用少量…

JDBC

JDBC背景知识&#xff1a;JDBC的使用1&#xff1a;驱动包的下载2&#xff1a;驱动包引入3&#xff1b;代码实现1&#xff1a;创建数据源2&#xff1a;和数据库创建网络连接3&#xff1a;构造sql语句4&#xff1a;执行sql5&#xff1a;释放资源sql语句的构建细节 查找操作&#…

计算机专业博士未来的方向,清华学霸、UCLA计算机博士专业导师手把手教你申请...

原标题:清华学霸、UCLA计算机博士专业导师手把手教你申请 封面插图来源:Behance 专业导师 Charles 硕士毕业于清华大学 UCLA 计算机博士在读 研究方向:人工智能、机器学习、自然语言处理 要不要考虑申请CS博士? 我一直坚定想去美国读 CS Ph.D,但是身边有人会问我 CS为什么…

UCLA Stata FAQ:Stata常见问题详解

Stata 现场班报名中…… Stata连享会 精品专题 || 精彩推文 文章目录 [Stata 现场班报名中……](https://gitee.com/arlionn/stata_training/blob/master/README.md) Stata Frequently Asked QuestionsTransferring data to/from StataStata to HLM Stata Graphical User Inte…