电子邮件发送无法使用Apache James

时间:2012-04-16 10:34:32

标签: java smtp javamail james

我正在尝试使用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中添加了测试用户。请求你帮助我。

3 个答案:

答案 0 :(得分:1)

我认为由此造成的问题:

在接受任何邮件之前通过电子邮件服务器执行反向DNS查询。他们检查电子邮件来自的IP域以及电子邮件真正来自的IP。

如果域名和电子邮件发件人的IP不匹配,邮件服务器会认为该邮件是垃圾邮件或垃圾邮件。

此处由于您的域(localhost)不是有效地址,当电子邮件服务器发送反向DNS查询时,不会获得IP并认为您的邮件是垃圾邮件或垃圾邮件。

有关详情,请查看:http://wiki.junkemailfilter.com/index.php/Fixing_Reverse_DNS

答案 1 :(得分:0)

我遇到了同样的问题。我做了什么:

  1. 转到路径:\ apps \ james \ conf
  2. 打开以编辑文件名'james-fetchmail.xml'
  3. 将“fetchmail”从false更改为true:
  4. 重新启动Apache James Server。
  5. 启动服务器后,您会在控制台上看到以下消息:
  6. 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?