我正在尝试使用apache james发送电子邮件,但电子邮件没有得到详细说明。以下是我的代码。
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
public class test {
public static void main(String args[]) throws Exception {
String user = "test";
String password = "test";
String fromAddress = "test@localhost";
String toAddress = "test@gmail.com";
Properties properties = new Properties();
properties.put("mail.smtp.host", "localhost");
properties.put("mail.smtp.port", "25");
properties.put("mail.smtp.username", user);
properties.put("mail.smtp.password", password);
properties.put("mail.transport.protocol", "smtp");
Session session = Session.getDefaultInstance(properties, null);
try
{
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(fromAddress));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toAddress));
message.setSubject("Email from our JAMEs");
message.setText("hiiiiii!!");
Transport.send(message);
System.out.println("Email sent");
}
catch (MessagingException e)
{
e.printStackTrace();
}
}
}
此外,在有密码测试的apache james中添加了测试用户。请求你帮助我。
答案 0 :(得分:1)
我认为由此造成的问题:
在接受任何邮件之前通过电子邮件服务器执行反向DNS查询。他们检查电子邮件来自的IP域以及电子邮件真正来自的IP。
如果域名和电子邮件发件人的IP不匹配,邮件服务器会认为该邮件是垃圾邮件或垃圾邮件。
此处由于您的域(localhost)不是有效地址,当电子邮件服务器发送反向DNS查询时,不会获得IP并认为您的邮件是垃圾邮件或垃圾邮件。
有关详情,请查看:http://wiki.junkemailfilter.com/index.php/Fixing_Reverse_DNS
答案 1 :(得分:0)
我遇到了同样的问题。我做了什么:
James Mail Server 2.3.2 远程管理器服务开始简单:4555 POP3服务开始简单:110 SMTP服务开始简单:25 NNTP服务开始简单:119 FetchMail已开始
现在,运行你的程序。它应该工作!
答案 2 :(得分:0)
您是否添加了域名“localhost”? 如果没有,请先创建域,然后再创建用户。
$ james-cli adddomains -h 127.0.0.1 localhost
$ james-cli lisdomains -h 127.0.0.1
而且,你是如何开始詹姆斯的?使用james.bat?