JavaMail未通过后缀发送SMTP电子邮件
我正在尝试设置JavaMail未通过后缀发送SMTP电子邮件,java,email,smtp,jakarta-mail,postfix-mta,Java,Email,Smtp,Jakarta Mail,Postfix Mta,我正在尝试设置JavaMail以使用Postfix发送和接收电子邮件,Postfix安装在我的CentOS7开发框中。我已经确认,postfix能够通过在终端中键入MAIL=/home/root/Maildir来显示收到的电子邮件,然后是return,然后是MAIL,其中列出了用户帐户收到的所有电子邮件。但是,当我以root用户身份登录并在CentOS 7终端中查看收到的电子邮件时,在运行我的Javamail代码后,没有新的电子邮件,如下所述如何获取Javamail以发送smtp电子邮件? 这是
JavaMail
以使用Postfix
发送和接收电子邮件,Postfix安装在我的CentOS7
开发框中。我已经确认,postfix
能够通过在终端中键入MAIL=/home/root/Maildir
来显示收到的电子邮件,然后是return,然后是MAIL
,其中列出了用户帐户收到的所有电子邮件。但是,当我以root用户身份登录并在CentOS 7终端
中查看收到的电子邮件时,在运行我的Javamail
代码后,没有新的电子邮件,如下所述如何获取Javamail
以发送smtp电子邮件?
这是我的班级:
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
//Send a simple, single part, text/plain e-mail
public class TestEmail {
public void send(){
// SUBSTITUTE YOUR EMAIL ADDRESSES HERE!
String to = "root@localhost";
String from = "username@localhost";
// SUBSTITUTE YOUR ISP'S MAIL SERVER HERE!
String host = "localhost";
// Create properties, get Session
Properties props = new Properties();
//http://docs.oracle.com/javaee/6/api/javax/mail/Session.html
// If using static Transport.send(),
// need to specify which host to send it to
props.put("mail.smtp.host", host);
// To see what is going on behind the scene
props.put("mail.debug", "true");
Session session = Session.getInstance(props);
try {
// Instantiate a message
Message msg = new MimeMessage(session);
//Set message attributes
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject("A new record was just added.");
msg.setSentDate(new Date());
// Set message content
msg.setText("This is a test of sending a " +
"plain text e-mail through Java.\n" +
"Here is line 2.");
//Send the message
Transport.send(msg);
}
catch (MessagingException mex) {
// Prints all nested (chained) exceptions as well
mex.printStackTrace();
}
}
}//End of class
我对这个班的称呼如下:
TestEmail em = new TestEmail();
em.send();
运行上述代码时,eclipse控制台将生成以下日志:
DEBUG: JavaMail version 1.5.0-b01
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host "localhost", port 25, isSSL false
220 localhost.localdomain ESMTP Postfix
DEBUG SMTP: connected to host "localhost", port: 25
EHLO localhost.localdomain
250-localhost.localdomain
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "SIZE", arg "10240000"
DEBUG SMTP: Found extension "VRFY", arg ""
DEBUG SMTP: Found extension "ETRN", arg ""
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "DSN", arg ""
DEBUG SMTP: use8bit false
MAIL FROM:<username@localhost>
250 2.1.0 Ok
RCPT TO:<root@localhost>
250 2.1.5 Ok
DEBUG SMTP: Verified Addresses
DEBUG SMTP: root@localhost
DATA
354 End data with <CR><LF>.<CR><LF>
Date: Mon, 5 Jan 2015 13:12:02 -0800 (PST)
From: username@localhost
To: root@localhost
Message-ID: <1738078707.0.1420492322780.JavaMail.username@localhost.localdomain>
Subject: A new record was just added.
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
This is a test of sending a plain text e-mail through Java.
Here is line 2.
.
250 2.0.0 Ok: queued as DB1249A618
QUIT
221 2.0.0 Bye
sessionID is: 0816C244BDBAAD890D82138DC3801962
调试:JavaMail版本1.5.0-b01
调试:已成功加载资源:/META-INF/javamail.default.providers
调试:加载的提供程序的表
调试:按类名列出的提供程序:{com.sun.mail.smtp.smtpsslttransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.smtpsslttransport,Oracle],com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtps,Oracle],com.sun.mail.imap.imapssltore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle],com.sun.mail.pop3.pop3ssstore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.pop3ssstore,Oracle],com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle],com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,Oracle]]
调试:按协议列出的提供程序:{imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.imapssltore,Oracle],imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.Oracle],smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtpsslttransport,Oracle],pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3,Oracle],pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.pop3sslsstore,Oracle],smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.SMTPTransport,Oracle]}
调试:已成功加载资源:/META-INF/javamail.default.address.map
调试:getProvider()返回javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
调试SMTP:useEhlo true,useAuth false
调试SMTP:尝试连接到主机“localhost”,端口25,isSSL false
220 localhost.localdomain ESMTP后缀
调试SMTP:已连接到主机“localhost”,端口:25
EHLO localhost.localdomain
250-localhost.localdomain
250-流水线
250码10240000
250-VRFY
250-ETRN
250-增强状态码
250-8比特
250 DSN
调试SMTP:找到扩展名“管道”,arg“”
调试SMTP:找到扩展名“SIZE”,arg“10240000”
调试SMTP:找到扩展名“VRFY”,参数“”
调试SMTP:找到扩展名“ETRN”,参数“”
调试SMTP:找到扩展名“ENHANCEDSTATUSCODES”,arg“”
调试SMTP:找到扩展名“8BITMIME”,参数“”
调试SMTP:找到扩展名“DSN”,参数“”
调试SMTP:use8bit false
邮寄地址:
250 2.1.0正常
RCPT至:
250 2.1.5正常
调试SMTP:已验证的地址
调试SMTP:root@localhost
资料
354使用结束数据。
日期:2015年1月5日星期一13:12:02-0800(太平洋标准时间)
发件人:username@localhost
致:root@localhost
消息ID:
主题:刚刚添加了一张新唱片。
MIME版本:1.0
内容类型:文本/普通;字符集=美国ascii
内容传输编码:7bit
这是一个通过Java发送纯文本电子邮件的测试。
这是第2行。
.
250 2.0.0正常:作为DB1249A618排队
退出
221 2.0.0再见
会话ID为:0816C244BDBAAD890D82138DC3801962
从日志
确定:以DB1249A618的形式排队
SMTP服务器正确接收邮件。
所以问题可能是服务器配置错误(可能是反垃圾邮件过滤器)或邮件地址错误
查看此处以检查您的服务器配置是否正确。这是一个答案,因为可能是Postfix上的问题中继,您需要询问正确的部分。更新了指向可能解决方案的链接(对于ubuntu,但不应相差太多)从技术上讲,这是一个答案!:)请注意,您使用的是一个相当旧的JavaMail版本,可能需要升级到,尽管我确信这与您的问题无关。@BillShannon谢谢!My
pom.xml
声明我使用的是1.5.0版,但显然我应该查看更新的代码示例。