java发送邮件问题
使用java通过Exchange服务器发邮件时,在内网可以正常发送,但是不能发往互联网邮箱,错误代码如下:
严重: Servlet.service() for servlet jspthrew exception
com.sun.mail.smtp.SMTPSendFailedException: 501 5.1.7 Invalid address
atcom.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1333)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:906)
atcom.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:535)
attest.jmail.ExchangeMail.send(ExchangeMail.java:72)
atorg.apache.jsp.index_jsp._jspService(index_jsp.java:67)
atorg.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
atjavax.servlet.http.HttpServlet.service(HttpServlet.java:820)
atorg.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
atorg.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
atorg.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
atjavax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
atorg.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
atorg.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
程序代码如下:
public void addMail() throws AddressException, MessagingException{
Properties props = System.getProperties();
props.put("mail.smtp.host", "10.2.32.145");
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
Email_AutherticatorBean auth = new Email_AutherticatorBean("zhq.hao@cbhb.com.cn","Password02!");
for(int i=0;i<1;i++){
Session mailSession = Session.getInstance(props, auth);
Message msg = new MimeMessage(mailSession);
//发件人邮箱
msg.setFrom(new InternetAddress("han.huang@cbhb.com.cn"));
//收件人邮箱地址
InternetAddress[] address = null;
address = InternetAddress.parse("test_bohai@163.com",false);
msg.setRecipients( Message.RecipientType.TO, address);
String temp = "内容内容";
msg.setSubject("主题haha"+(i+1));
msg.setSentDate(newDate());
msg.setText(temp);
// Transport.send(msg);
SMTPTransport t = (SMTPTransport) mailSession.getTransport("smtp");
try {
if (true)
t.connect("10.2.32.145", "cbhb/zhq.hao","Password02!");
else
t.connect();
t.sendMessage(msg, msg.getAllRecipients());
} finally {
t.close();
}
}
}
经过分析后,发现代码需要简单修改,修改后如下:
DEBUG: setDebug: JavaMail version 1.3.1
DEBUG: getProvider() returningjavax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,SunMicrosystems, Inc] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: useEhlotrue, useAuth true DEBUG SMTP: trying to connect to host "10.2.32.145",port 587
220 BHDCPEXGAP03.cbhb.root.cbhbank.netMicrosoft ESMTP MAIL Service ready at Mon, 25 Nov 2013 17:10:15 +0800 DEBUGSMTP: connected to host "10.2.32.145", port: 587
EHLO cbhb-4bcb3aa917
250-BHDCPEXGAP03.cbhb.root.cbhbank.netHello [10.16.73.99] 250-SIZE 10485760 250-PIPELINING 250-DSN250-ENHANCEDSTATUSCODES 250-AUTH GSSAPI NTLM LOGIN 250-8BITMIME 250-BINARYMIME
250 CHUNKING
DEBUG SMTP: Found extension"SIZE", arg "10485760"
DEBUG SMTP: Found extension"PIPELINING", arg ""
DEBUG SMTP: Found extension "DSN",arg ""
DEBUG SMTP: Found extension"ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension"AUTH", arg "GSSAPI NTLM LOGIN"
DEBUG SMTP: Found extension"8BITMIME", arg ""
DEBUG SMTP: Found extension"BINARYMIME", arg ""
DEBUG SMTP: Found extension "CHUNKING",arg ""
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 VXNlcm5hbWU6
aGFuLmh1YW5n
334 UGFzc3dvcmQ6
UGFzc3dvcmQwMyE=
235 2.7.0 Authentication successful
DEBUG SMTP: use8bit false
MAIL FROM:<han.huang@cbhb.com.cn>
250 2.1.0 Sender OK
RCPT TO:<eidolond@gmail.com>
250 2.1.5 Recipient OK
DEBUG SMTP: Verified Addresses
DEBUG SMTP:eidolond@gmail.com
DATA
354 Start mail input; end with<CRLF>.<CRLF>
Message-ID: <17514905.1385370503062.JavaMail.a@cbhb-4bcb3aa917>
From: han.huang@cbhb.com.cn
To: eidolond@gmail.com
Subject: =?GBK?B?suLK1NPKvP4=?=
Mime-Version: 1.0
Content-Type: text/plain; charset=GBK
Content-Transfer-Encoding: base64
suLK1NPKvP4=
.
250 2.6.0 <17514905.1385370503062.JavaMail.a@cbhb-4bcb3aa917>[InternalId=1322968] Queued mail for delivery QUIT
其中最重要的问题是,我的邮件服务器上为了配合其他应用开启了匿名访问,然而这段程序中用的是验证身份的方式,在通过邮件服务器时,服务器认为是匿名发送,导致不能发往外网。我把代码中smtp用的端口25改为587就好使了。还有一个方法是专门为这个java发送服务器开启中继也可以,一定是只针对这个java服务器的IP而不是针对所有的中继。
本文转自legendfu51CTO博客,原文链接:http://blog.51cto.com/legendfu/1331493 ,如需转载请自行联系原作者
java发送邮件问题相关推荐
- 用java发送邮件(黄海已测试通过)
/*** java发送带附件的邮件* 周枫* 2013.8.10*/ package com.dsideal.Util; import javax.mail.*; import javax.mail. ...
- Java发送邮件(带附件)
实现java发送邮件的过程大体有以下几步: 准备一个properties文件,该文件中存放SMTP服务器地址等参数. 利用properties创建一个Session对象 利用Session创建Mess ...
- 手把手教你实现Java发送邮件(1)-发送简单的文本
说明:本博客已经收藏至我的gitee中的code_demo仓库(点击此链接跳转)中,且gitee中有相应的代码~ 欢迎访问~~ 不仅仅是code,还有一些通俗的讲解哦~ 文章目录 一.Java实现邮件 ...
- 手把手教你用java发送邮件
手把手教你用java发送邮件 一.学习目的 1.学会用jmail发送邮件 2.学会自动发送邮件需要的一些设置 二.准备内容(以163邮箱示范) 1.个人邮箱 首先登录163个人邮箱,然后在个人页面-设 ...
- 简易的定时发送生日邮件功能(Listener+定时器+使用java发送邮件)
实现功能主要技术点: Listener(监听器) 使用Java发送邮件(JavaMail的使用) 代码示例 创建web工程,写一个监听器监听ServletContext对象的创建(创建时机:启动服务器 ...
- 【Java学习笔记】38.Java 发送邮件
Java 发送邮件 使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 JavaMail API 和Java Activation Framework (JAF) . 您 ...
- java 发送邮件和读取邮件(163邮箱为例)
1,发送邮件 (1)在设置里面打开163邮箱的smtp.pop3,设置授权码 (2)在引用pom.xml中引用mail.jar <dependency > <groupId > ...
- Java发送邮件时标题和发件人乱码
最近碰到一个问题,Java发送邮件时,本地没有问题,测试服务器也没问题,但上线后邮件的标题和发件人乱码,正文OK 通过翻阅资料,原因及解决方法如下: 原因: 当一段 Text 或者 HTML 通过电子 ...
- Java发送邮件中文乱码问题
使用Java发送邮件,会出现在windows环境中无任何问题,在linux环境中会出现标题.或者附件名称中文乱码问题.可以在程序中加入下面代码块解决. static {// 解决邮件标题.附件名称中文 ...
- Java发送邮件详解
Java发送邮件详解 本期我们学习Java如何发送邮件,Java发送邮件是以后工作较为常用的一个Java技能,想Web的邮箱验证.邮件提醒等功能,后期我也会编写一个教务的成绩提醒系统,其中,提醒的功能 ...
最新文章
- Makefile中的几个调试方法
- 详解Azure的权限控制
- java中包的_Java中的包
- hdu1007 最近点对
- Shiro总是将我重定向到login.jsp
- 努力一下,还是可以成为技术美术(TA)的
- MySQL优化器cost计算
- stm32标准外设库和芯片资料下载地址
- dataframe数据标准化处理_数据处理中的标准化、归一化究竟是什么?
- 可是听了半天C++五子棋
- linux中的管道和重定向
- MSN Messenger协议
- 麦子学院与阿里云战略合作 在线教育领军者技术实力被认可
- 蓝桥杯嵌入式备赛手册
- 概率论基础知识(一)概率论基本概念
- AI改写人类起源:黑猩猩并不是我们的祖先!
- 记录,Cents 7 更改home和root的中文路径
- 黑马优购uni-app
- 追根溯源 | 带你了解现代机械设计团队的机械设计协作方式
- 机器学习算法系列之K近邻算法