5

我试图使用谷歌应用引擎发送一封带有此代码的简单电子邮件。但是什么也没发生,我必须配置什么才能使用邮件 api 吗?这在本地主机上运行。我使用 gmail 作为邮件主机。

   String host = "smtp.google.com";
String to = "example@yahoo.fr";
String from = "example@gmail.com";
String subject = "this is a test";
String messageText = "test";
boolean sessionDebug = false;
// Create some properties and get the default Session.
Properties props = System.getProperties();
props.put("mail.host", host);
props.put("mail.transport.protocol", "smtp");
Session mailSession = Session.getDefaultInstance(props, null);

// Set debug on the Session
// Passing false will not echo debug info, and passing True will.

mailSession.setDebug(sessionDebug);

// Instantiate a new MimeMessage and fill it with the 
// required information.

Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = { new InternetAddress(to) };
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
msg.setSentDate(new Date());
msg.setText(messageText);

// Hand the message to the default transport service
// for delivery.

Transport.send(msg);
4

4 回答 4

10

在本地运行 AppEngine 开发服务器时,实际上不会发送通过邮件服务发送的任何内容 - 它只会记录到控制台

这里

当开发服务器中运行的应用程序调用邮件服务发送电子邮件消息时,该消息将打印到日志中。Java 开发服务器不发送电子邮件。

另外,from地址必须是(从这里

  • 应用管理员的电子邮件
  • 使用 Google 帐户登录的当前登录用户的电子邮件
  • 来自应用程序的有效电子邮件接收地址
于 2012-06-09T04:00:37.973 回答
1

发件人应该是您自己的 Gmail 电子邮件地址,而不是example@gmail.com

原因是 SMTP 服务器需要对您进行身份验证。

于 2012-06-09T03:52:43.003 回答
1

显然,GAE 不再允许使用管理员帐户。您需要使用服务帐户:project-id@appspot.gserviceaccount.com

我以前的项目仍然使用管理员帐户,但最近创建的项目不允许我使用任何管理员帐户。

于 2016-04-01T13:08:35.483 回答
0

除了电子邮件无法在 localhost 上运行或由于发件人电子邮件不是经过身份验证的电子邮件之外,我还经历过即使版本不是默认版本,电子邮件也无法正常工作。我在任何地方都找不到这个记录。

例如:( nondefaultversion-dot-myapp.appspot.com电子邮件不起作用,没有错误日志) myapp.appspot.com(电子邮件有效)

请确认其他人是否也遇到过这个问题。

于 2014-09-25T05:38:34.450 回答