Java 使用谷歌应用程序引擎发送电子邮件
我正试图通过一个servlet从Google App Engine发送电子邮件,代码如下。应用owner@gmail.com在“电子邮件API授权发件人”中列出。我没有收到任何错误,也没有收到任何电子邮件。我可以在日志中看到日志消息,因此我非常确定代码已经执行。知道我为什么没有收到任何电子邮件吗Java 使用谷歌应用程序引擎发送电子邮件,java,google-app-engine,Java,Google App Engine,我正试图通过一个servlet从Google App Engine发送电子邮件,代码如下。应用owner@gmail.com在“电子邮件API授权发件人”中列出。我没有收到任何错误,也没有收到任何电子邮件。我可以在日志中看到日志消息,因此我非常确定代码已经执行。知道我为什么没有收到任何电子邮件吗 package com.myapplication; import java.io.IOException; import java.util.Properties; import java.util
package com.myapplication;
import java.io.IOException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SendMailServlet extends HttpServlet {
final static Logger logger = Logger.getLogger(SendMailServlet.class.getName());
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
try {
sendMail();
logger.log(Level.INFO, "Send mail!");
} catch (AddressException e) {
logger.log(Level.WARNING, e.getMessage());
} catch (MessagingException e) {
logger.log(Level.WARNING, e.getMessage());
}
}
private void sendMail() throws MessagingException {
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("application.owner@gmail.com"));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress("application.owner@gmail.com"));
msg.setSubject("The subject");
msg.setText("The message body");
Transport.send(msg);
}
}
您是在appspot.com(“in prod”)上运行,还是在本地运行?如果是后者,有充分的文件证明邮件实际上不会发送,除非您有自己的SMTP安装,并且在运行
dev_appserver
时使用--SMTP
标志。我正在生产环境中运行(在appspot.com上,而不是在本地)。我只是将您的代码与我的工作代码进行了比较。这基本上是一样的,所以在代码方面这应该是可行的。但是,我看到您使用logLevel.FINE
记录异常。请检查您的webapp/WEB-INF/logging.properties
文件是否设置为FINE
或FINEST
,以确保获取所有日志。我建议您将您的异常记录为警告或错误。关于日志级别,这一点很好,谢谢。这段代码几乎就是我在文档中找到的示例代码,所以我有点惊讶它不起作用。是否需要进行任何配置才能使其正常工作?还是其他需要满足的条件?@PatrikSalomonsson不太可能。发件人的电子邮件地址通常有一些限制,但由于您以所有者的身份发送,因此这不应该成为问题。更改日志记录后,日志是否包含异常?您是在appspot.com(“in prod”)上运行,还是在本地运行?如果是后者,有充分的文件证明邮件实际上不会发送,除非您有自己的SMTP安装,并且在运行dev_appserver
时使用--SMTP
标志。我正在生产环境中运行(在appspot.com上,而不是在本地)。我只是将您的代码与我的工作代码进行了比较。这基本上是一样的,所以在代码方面这应该是可行的。但是,我看到您使用logLevel.FINE
记录异常。请检查您的webapp/WEB-INF/logging.properties
文件是否设置为FINE
或FINEST
,以确保获取所有日志。我建议您将您的异常记录为警告或错误。关于日志级别,这一点很好,谢谢。这段代码几乎就是我在文档中找到的示例代码,所以我有点惊讶它不起作用。是否需要进行任何配置才能使其正常工作?还是其他需要满足的条件?@PatrikSalomonsson不太可能。发件人的电子邮件地址通常有一些限制,但由于您以所有者的身份发送,因此这不应该成为问题。更改日志记录后,日志是否包含异常?