提问者:小点点

如何使用apache james电子邮件服务器将邮件发送到gmail


我正在尝试使用apache james服务器发送邮件。我已经完成了所有james配置。
我的代码执行正确,没有例外。但是邮件无法投递。
这是我的示例代码

public void sendMail(String toField, String subject, Users user, 
                               HttpServletRequest request)throws Exception {
    // TODO Auto-generated method stub
    logger.info("sending mail....");
    String loginLink = request.getScheme()  +"://" + request.getServerName() 
     + ":" + request.getServerPort() + request.getContextPath()+"/auth/login";

    // Prepare the evaluation context 
    final WebContext ctx = new WebContext(request, request.getSession()
                                    .getServletContext(),request.getLocale());

    ctx.setVariable("eagletId", user.getEagletId()); 
    ctx.setVariable("name", user.getFirstName());
    ctx.setVariable("setSentDate", new Date()); 
    ctx.setVariable("password", user.getPassword()); 
    ctx.setVariable("link",loginLink);

    // Create a mail session  
    Properties properties = new Properties();  
    properties.put("mail.smtp.host", "localhost");  
    properties.put("mail.smtp.port", "25");  
    properties.put("mail.smtp.username", "coepleap");  
    properties.put("mail.smtp.password", "coepleap");  
    Session session = Session.getDefaultInstance(properties,new Authenticator() {
        protected PasswordAuthentication getpassAuthentication(){
            return new PasswordAuthentication("coepleap", "coepleap");
        }
    });

    MimeMessage message = new MimeMessage(session);
    MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
    message.setFrom(new InternetAddress("coepleap"));
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(toField));
    helper.setSubject(subject);

    final String htmlContent = this.templateEngine.process("email.html",ctx);
    helper.setText(htmlContent,true);
    Transport.send(message);        
 }

}

有人能帮我吗?


共2个答案

匿名用户

这是使用gmail发送邮件的代码

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SendMail {

public static void main(String[] args) {

    final String username = "username";
    final String password = "fghdf";

    Properties props = new Properties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");

    Session session = Session.getInstance(props,
      new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
      });

    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("from user"));
        message.setRecipients(Message.RecipientType.TO,
            InternetAddress.parse("to user"));
        message.setSubject("Testing Subject");
        message.setText("Dear user ,"
            + "\n\n your username is xxx and pasword is yyy");

        Transport.send(message);

        System.out.println("Done");

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }
}

}

匿名用户

很可能你没有满足Gmail的递送要求。它可能无法通过rdns解析发件人并跳转它。可能认为你是一个作弊用户。