我正在使用此代码在我的java应用程序中发送电子邮件
try{
Email email = new SimpleEmail();
email.setHostName("smtp.googlemail.com");
email.setSmtpPort(587);
email.setAuthenticator(new DefaultAuthenticator("me@gmail.com", "mypwd"));
email.setTLS(true);
email.setFrom("me@gmail.com");
email.setSubject("TestMail");
email.setMsg("This is a test mail ... :-)");
email.addTo("me@hotmail.com");
email.send();
System.out.println("Mail sent!");
} catch (EmailException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
它的工作完美,我在收件箱中收到电子邮件,但是当我在GWT(Appengine项目)服务器端放入相同的代码时, 它不会工作 它显示没有错误,没有例外,并说邮件发送,但它从未实际发送到我的收件箱。
也尝试了这个
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("appname@appspot.gserviceaccount.com", "Example.com Admin"));
msg.addRecipient(Message.RecipientType.TO,
new InternetAddress("myemail@gmail.com", "Mr. User"));
msg.setSubject("Your Example.com account has been activated");
msg.setText(msgBody);
Transport.send(msg);
} catch (AddressException e) {
// ...
} catch (MessagingException e) {
// ...
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
请指导我
谢谢
答案 0 :(得分:2)
看看这个:Mail Go API Overview
您没有收到错误,因为没有错误 邮件已发送,但由于上述限制,您将无法收到邮件。
答案 1 :(得分:1)
public String sendMail(String from, String to, String replyTo, String subject, String message) {
String output=null;
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from, "Gmail.com Admin"));
msg.addRecipient(Message.RecipientType.TO,
new InternetAddress(to, "Mr. User"));
msg.setSubject(subject);
msg.setText(message);
msg.setReplyTo(new InternetAddress[]{new InternetAddress(replyTo)});
Transport.send(msg);
} catch (Exception e) {
output=e.toString();
}
return output;
}
根据developers.google.com的引用,发件人地址(from
)必须是以下类型之一:
该应用的任何有效电子邮件接收地址(例如xxx@APP-ID.appspotmail.com)。
我尝试了它,它可以在托管的 gwt 应用程序中运行。
答案 2 :(得分:0)
答案 3 :(得分:0)
您是否收到了AddressException并吞没了它而没有显示错误?
我问,因为这是一个不受支持的“来自”地址:
appname@appspot.gserviceaccount.com
应该是:
anything@appid.appspotmail.com
或管理员或登录用户的电子邮件地址。请参阅此处的规则:
https://developers.google.com/appengine/docs/java/mail/usingjavamail#Senders_and_Recipients
答案 4 :(得分:0)
同样的问题,这对我有用,100%也适合你(如果你正在使用eclipse)。
发送邮件时,实际上它已发送到您的localhost服务器。因此,您必须从App引擎管理控制台创建个人应用引擎。
为此,请转到此Link,然后选择您要用来制作应用引擎,创建应用程序的帐户,而不是编写应用程序标识符(注意此应用程序标识符,此操作在您的eclipse之后部署时项目)
然后在应用程序设置中,找到此已配置的服务,因为您必须为您的应用程序授予权限,在重定向到入站服务后,选择您的应用程序语言Java / Python / Go您必须在web.xml中编写
在eclipse之后,右键单击您的项目,转到Google - >部署到应用引擎,而不是在之前记下的应用程序ID字段中写入应用程序ID。首先检查您是否必须安装应用引擎。
比点击完成。部署需要一些时间,而不是自动打开浏览器。所以现在你的gwt应用程序在你的服务器上。享受:)