我正在尝试使用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);
}
}
有人能帮我吗?
这是使用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解析发件人并跳转它。可能认为你是一个作弊用户。