未正确发送Java电子邮件API电子邮件
我正在使用Java电子邮件API实现电子邮件功能。它似乎不起作用,因为没有收到任何电子邮件。我的代码中没有任何异常(因此它似乎正确地连接到smtp),当我调试它时,它似乎运行正常。所以我想知道我的代码是否还有其他问题?在这里,还有相关的进口商品。类中还有一个“createBody()”方法,但它只用信息填充消息,所以我认为这并不重要未正确发送Java电子邮件API电子邮件,java,email,Java,Email,我正在使用Java电子邮件API实现电子邮件功能。它似乎不起作用,因为没有收到任何电子邮件。我的代码中没有任何异常(因此它似乎正确地连接到smtp),当我调试它时,它似乎运行正常。所以我想知道我的代码是否还有其他问题?在这里,还有相关的进口商品。类中还有一个“createBody()”方法,但它只用信息填充消息,所以我认为这并不重要 import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class Mail {
public Mail() {
}
static public boolean sendHtml(Commission commission, String mailServer, InternetAddress fromAddress, InternetAddress ccAddress, String subject, String header) throws Exception {
try {
String body = createBody(commission);
InternetAddress toAddress = new InternetAddress(commission.getForm().getActiveReceiver().getEmail());
Properties props = new Properties();
props.put("mail.smtp.host", mailServer);
Session session = Session.getDefaultInstance(props);
//Instantiate a message holder
Message msg = new MimeMessage(session);
msg.setHeader("Content-Type", "text/plain; charset='iso-8859-1'");
//From
msg.setFrom(fromAddress);
//To
msg.addRecipient(Message.RecipientType.TO, toAddress);
//CC
if (ccAddress != null)
msg.addRecipient(Message.RecipientType.CC, ccAddress);
//Subject
if (!subject.equals(""))
msg.setSubject(subject);
//Date
msg.setSentDate(new Date());
//Begin
StringBuffer sb = new StringBuffer();
sb.append("<html>\n");
sb.append("<head>\n");
sb.append("<title>\n");
sb.append("</title>\n");
sb.append("<style type=\"text/css\">\n");
sb.append("*{font-family: Tahoma; font-size: 11px; font-weight: normal; color: #51514F;}\n");
sb.append("body{background-color: #FEF8EA;}\n");
sb.append("tr.odd {background-color: #F3F3F3;border: 1px #F3F3F3 solid;}\n");
sb.append("tr.even {background-color: #FFFFFF;border: 1px #FFFFFF solid;}\n");
sb.append("th {font-weight: bold; background-color:#F3F3F3; border-bottom: 1px solid #E2D6BC;}\n");
sb.append("p.header {font-weight: bold;}\n");
sb.append("table {border-collapse:collapse; border: 1px solid #E2D6BC;}\n");
sb.append("td.center {text-align:center;}\n");
sb.append("</style>\n");
sb.append("</head>\n");
sb.append("<body>\n");
//Header
if (!header.equals(""))
sb.append("<h1>"+header+"</h1>");
//Body
if (!body.equals(""))
sb.append(body);
//End
sb.append("</body>\n");
sb.append("</htmnl>\n");
msg.setContent(sb.toString(), "text/html");
System.out.println("About to connect");
//Connect
Transport transport = session.getTransport("smtp");
transport.connect();
//Sending the mail
transport.sendMessage(msg,msg.getRecipients(Message.RecipientType.TO));
//Sending the CC mail
if (ccAddress != null)
transport.sendMessage(msg,msg.getRecipients(Message.RecipientType.CC));
//Close
transport.close();
} catch (Exception e) {
throw e;
}
return true;
}
}
import javax.mail.Message;
导入javax.mail.Session;
导入javax.mail.Transport;
导入javax.mail.internet.InternetAddress;
导入javax.mail.internet.mimessage;
公营邮件{
公共邮件(){
}
静态公共布尔sendHtml(佣金、字符串邮件服务器、InternetAddress fromAddress、InternetAddress ccAddress、字符串主题、字符串头)引发异常{
试一试{
字符串体=createBody(委托);
InternetAddress toAddress=新的InternetAddress(commission.getForm().getActiveReceiver().getEmail());
Properties props=新属性();
props.put(“mail.smtp.host”,mailServer);
Session Session=Session.getDefaultInstance(props);
//实例化消息持有者
Message msg=新的mimessage(会话);
msg.setHeader(“内容类型”、“文本/普通;字符集='iso-8859-1'”);
//从
msg.setFrom(fromAddress);
//到
msg.addRecipient(Message.RecipientType.TO,toAddress);
//抄送
if(ccAddress!=null)
msg.addRecipient(Message.RecipientType.CC,ccAddress);
//主题
如果(!subject.equals(“”)
msg.setSubject(主题);
//日期
msg.setSentDate(新日期());
//开始
StringBuffer sb=新的StringBuffer();
某人附加(“\n”);
某人附加(“\n”);
某人附加(“\n”);
某人附加(“\n”);
某人附加(“\n”);
sb.append(“*{font-family:Tahoma;字体大小:11px;字体重量:normal;颜色:#51514F;}\n”);
sb.append(“正文{背景色:#FEF8EA;}\n”);
sb.append(“tr.odd{背景色:#f3;边框:1px#f3实心;}\n”);
sb.append(“tr.偶数{背景色:#FFFFFF;边框:1px#FFFFFF solid;}\n”);
sb.append(“th{font-weight:bold;背景色:#f3;边框底部:1px solid#E2D6BC;}\n”);
sb.append(“p.header{font-weight:bold;}\n”);
sb.append(“表{border collapse:collapse;border:1px solid#E2D6BC;}\n”);
sb.append(“td.center{text align:center;}\n”);
某人附加(“\n”);
某人附加(“\n”);
某人附加(“\n”);
//标题
如果(!header.equals(“”)
sb.追加(“+标题+”);
//身体
如果(!body.equals(“”)
某人(身体);
//结束
某人附加(“\n”);
某人附加(“\n”);
msg.setContent(sb.toString(),“text/html”);
System.out.println(“即将连接”);
//连接
传输=session.getTransport(“smtp”);
transport.connect();
//发送邮件
sendMessage(msg,msg.getRecipients(Message.RecipientType.TO));
//发送抄送邮件
if(ccAddress!=null)
sendMessage(msg,msg.getRecipients(Message.RecipientType.CC));
//接近
transport.close();
}捕获(例外e){
投掷e;
}
返回true;
}
}
尝试以下操作。这可能对你有帮助
Session mailSession = Session.getInstance(System.getProperties());
Transport transport
= new SMTPTransport(mailSession,new URLName("mail.your-server.com"));
transport.connect("mail.your-server.com",portNumber,userName,userPassword);
Exmaple:
Session mailSession = Session.getInstance(System.getProperties());
Transport transport
= new SMTPTransport(mailSession,new URLName("mail.prabhakar.com"));
transport.connect("mail.prabhakar.com",25,"prabhakar","******");
您可以打开smtp调试,并查看
smtp
级别发生的情况:
Properties props = new Properties();
props.put("mail.smtp.host","<MAILHOST>");
props.put("mail.debug", true);
Session session = Session.getInstance(props);
Properties=newproperties();
props.put(“mail.smtp.host”,”);
props.put(“mail.debug”,true);
Session=Session.getInstance(props);
最近没有使用此框架,但您应该检查一些事情。。。1.允许您在没有身份验证的情况下使用服务器吗?2.try/catch块不执行任何操作,在重新引发异常之前,至少用e.printStackTrace()放一行,以防它不在调用方法中。3.您是否已从简单的telnet客户端(telnet mailserver 25)测试了邮件服务器,然后只需使用SMTP命令即可。4.您是否检查了连接是否真正建立,以及服务器是否收到任何消息?