GreenMail 不返回 BCC 收件人地址
GreenMail not returning BCC recipient addresses
我在测试中使用 GreenMail 来验证我们的应用程序是否正确发送电子邮件。
我用以下方式启动 GreenMail:
GreenMail greenMailServer = new GreenMail(new ServerSetup(port, "localhost", ServerSetup.PROTOCOL_SMTP));
greenMailServer.start();
我有一个单独的进程将电子邮件发送到 GreenMail SMTP 服务器(这是集成测试的一部分),所以我的测试代码等待电子邮件:
long endTime = System.currentTimeMillis() + timeout;
// Get the fake mail server and listen for messages
GreenMail mailServer = ITester.getFakeEMail();
while(System.currentTimeMillis() < endTime) {
boolean timedOut = !mailServer.waitForIncomingEmail(endTime - System.currentTimeMillis(), 1);
if(timedOut) {
throw new TestFailure(lineNumber, "Timed out waiting for email To: '"+to+"' Subject: '"+subject+"' Body: '"+body+"' .");
}
for(MimeMessage message : mailServer.getReceivedMessages()) {
try {
StringBuilder errors = new StringBuilder();
// Check who the message is going to
//Address[] allRecipients = message.getRecipients(Message.RecipientType.BCC);
Address[] allRecipients = message.getAllRecipients();
我已经尝试了针对 Recipients 和 getAllRecipients 的注释掉的请求,但我总是收到 null。我已验证我的应用程序正在将电子邮件发送到 BCC 字段中的一个地址。
知道为什么我看不到收件人电子邮件地址吗?
我在这个博客上找到了答案:
https://developer.vz.net/2011/11/08/unit-testing-java-mail-code/
简短的版本是使用一个用户并从他的收件箱中获取消息,而不是从整个服务器中获取消息。然后你知道它到达了那个电子邮件地址。
GreenMailUser user = mailServer.setUser("junk@somewhere.com", "");
MailFolder inbox = mailServer.getManagers().getImapHostManager().getInbox(user);
for(StoredMessage message : inbox.getMessages()) {
// Verify the messages
}
我在测试中使用 GreenMail 来验证我们的应用程序是否正确发送电子邮件。
我用以下方式启动 GreenMail:
GreenMail greenMailServer = new GreenMail(new ServerSetup(port, "localhost", ServerSetup.PROTOCOL_SMTP));
greenMailServer.start();
我有一个单独的进程将电子邮件发送到 GreenMail SMTP 服务器(这是集成测试的一部分),所以我的测试代码等待电子邮件:
long endTime = System.currentTimeMillis() + timeout;
// Get the fake mail server and listen for messages
GreenMail mailServer = ITester.getFakeEMail();
while(System.currentTimeMillis() < endTime) {
boolean timedOut = !mailServer.waitForIncomingEmail(endTime - System.currentTimeMillis(), 1);
if(timedOut) {
throw new TestFailure(lineNumber, "Timed out waiting for email To: '"+to+"' Subject: '"+subject+"' Body: '"+body+"' .");
}
for(MimeMessage message : mailServer.getReceivedMessages()) {
try {
StringBuilder errors = new StringBuilder();
// Check who the message is going to
//Address[] allRecipients = message.getRecipients(Message.RecipientType.BCC);
Address[] allRecipients = message.getAllRecipients();
我已经尝试了针对 Recipients 和 getAllRecipients 的注释掉的请求,但我总是收到 null。我已验证我的应用程序正在将电子邮件发送到 BCC 字段中的一个地址。
知道为什么我看不到收件人电子邮件地址吗?
我在这个博客上找到了答案:
https://developer.vz.net/2011/11/08/unit-testing-java-mail-code/
简短的版本是使用一个用户并从他的收件箱中获取消息,而不是从整个服务器中获取消息。然后你知道它到达了那个电子邮件地址。
GreenMailUser user = mailServer.setUser("junk@somewhere.com", "");
MailFolder inbox = mailServer.getManagers().getImapHostManager().getInbox(user);
for(StoredMessage message : inbox.getMessages()) {
// Verify the messages
}