javaMail如何通过代理服务器发送邮件

发布于 2022-01-04 17:53:41 字数 1674 浏览 778 评论 8

try {

String from = "zhangsan@163.com"; // 获取发件人

String to = "434349556qq.com"; // 获取收件人

String subject = "邮件发送测试"; // 获取邮件主题

String messageText = "邮件发送测试内容。"; // 获取邮件内容

String password = "123456"; // 获取发件人邮箱密码

String mailserver = "smtp.163.com"; // 指定SMTP服务器的主机名

// 建立邮件会话

Properties props = new Properties();

props.put("http.proxySet","true");//设置代理主机参数 

props.put("http.proxyHost","172.17.18.80"); 

props.put("http.proxyPort","8080"); 

props.put("mail.smtp.host", mailserver); // 指定SMTP协议

props.put("mail.smtp.auth", "true"); // 指定需要向服务器端提交身份认证

Session sess = Session.getInstance(props); // 获取session

sess.setDebug(true); // 设置调试标志

MimeMessage message = new MimeMessage(sess); // 新建一个消息对象

// 设置发件人

InternetAddress from_mail = new InternetAddress(from);

message.setFrom(from_mail);

// 设置收件人

InternetAddress to_mail = new InternetAddress(to);

message.setRecipient(Message.RecipientType.TO, to_mail);

// 设置主题

message.setSubject(subject);

// 设置内容

message.setText(messageText);

// 设置发送时间

message.setSentDate(new Date());

// 发送邮件

message.saveChanges(); // 保证报头域同会话内容保持一致

Transport transport = sess.getTransport("smtp");

transport.connect(mailserver, from, password); // 建立与邮件服务器之间的连接

transport.sendMessage(message, message.getAllRecipients()); // 发送邮件

transport.close(); // 关闭与邮件服务器之间的连接

System.out.println("发送邮件产生的成功。");

} catch (Exception e) {

System.out.println("发送邮件产生的错误:" + e.getMessage());

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

反目相谮 2022-01-08 02:50:55

你好,请问楼主的问题是怎样解决的,我也遇到这个问题,公司代理端口也是8080,报的错误,也是一直连接不上邮箱服务器,想加你qq加不上啊,楼主,请指点一下吧

等风来 2022-01-07 23:49:00

遇到同样的问题 这样通过代理发邮件 望高手指点 。。。

可是我不能没有你 2022-01-07 22:51:56

请问你的代理发邮件的问题解决没,可否告知一下怎么弄的

终陌 2022-01-07 10:26:32

回复
两年了……回来挖个坟,需要验证的HTTP代理邮件转发是需要修改Javamail源码的,因为Javamail总是直连STMP服务器的,需要在连接前截下连接,并发送到代理服务器的HTTP连接,如果要验证,需要发送Base64编码的验证信息,待服务器返回200 OK后读掉该信息后连接STMP服务器,之后才能正常对话。

妖妓 2022-01-06 19:37:31

所有网上涉及Javamail使用代理服务器的文章都用这样的代码,但是是否有人真的亲自试过?我看了Javamail的源码,根本就没有对于proxy的字段的解析和支持,真是害人啊。。。

左岸枫 2022-01-06 10:22:37

java的邮件发送有点难,建议可以参考web方式发送邮件的问题:http://www.ccproxy.com/filter009.htm

水水月牙 2022-01-05 03:11:43

非常抱歉,是我没把问题描述清楚。这段简单的利用javaMail发邮件程序,在不用代理上网的机器上运行正常(邮件能发送出去);而在通过代理上网 的机器上确发送失败。

控制台报的错误是:

DEBUG SMTP: trying to connect to host "smtp.163.com", port 25, isSSL false
发送邮件产生的错误:Could not connect to SMTP host: smtp.163.com, port: 25

德意的啸 2022-01-04 22:51:56

你这代码贴出来想说什么

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文