3

Java メールでバウンスメールを送信者のアドレスとは異なるアドレスに送信し、バウンスメッセージを送信者にまったく送信しないようにしようとしています。

これまでのところ、テスト プログラム (以下) ではどちらも実行できません。

送信者は「joe@acme.com」です。バウンス メッセージを「bounce@acme.com」にのみ送信したい

返信先アドレスと Return-Path: ヘッダーの両方を設定しようとしていますが、バウンスは、bounce@acme.com には送信されず、joe@acme.com にのみ送信されます。

バウンス メッセージのヘッダーを見ると、Return-Path: ヘッダーが送信者の joe@acme.com に設定されており、希望どおりに bounce@acme.com に設定されていません。

javamail 1.4 を使用しています

ヘルプやヒントを事前にありがとう

import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

import java.util.Properties;


    public class SendEmail {


        public static void main(String[] args) throws Exception{
            String smtpServer  = "msg.abc.acme.cp,";
            int port           = 25;
            String userid      = "authorized.person"; 
            String password    = "password";   
            String contentType = "text/html";
            String subject     = "test: bounce an email to a different address from the sender";
            String from        = "joe@acme.com";
            String to          = "bogus@fauxmail.com";
            String replyto     = "bounce@acme.com";
            String body        = "Test: get message to bounce to a separate email address";
            InternetAddress[] arrayReplyTo  = new InternetAddress[1];
            arrayReplyTo[0] = new InternetAddress(replyto);


            Properties props   = new Properties();

            props.put("mail.transport.protocol", "smtp");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.starttls.enable","true");
            props.put("mail.smtp.host", smtpServer);

            Session mailSession = Session.getInstance(props);

            // Get runtime more runtime output when attempting to send an email
            //mailSession.setDebug(true);

            MimeMessage message = new MimeMessage(mailSession);
            message.setFrom(new InternetAddress(from));
            message.setReplyTo(arrayReplyTo);
            message.setRecipients(Message.RecipientType.TO, to);
            message.setSubject(subject);
            message.setContent(body,contentType);
            message.setHeader("Return-Path:","<bounce@acme.com>");

            Transport transport = mailSession.getTransport();
            try{
                System.out.println("Sending ....");
                transport.connect(smtpServer, port, userid, password);
                transport.sendMessage(message,message.getRecipients(Message.RecipientType.TO));
                System.out.println("Sending done ...");
            }
            catch(Exception e) {
                System.err.println("Error Sending: ");
                e.printStackTrace();


            }
            transport.close();
        }// end function main()

    }// end class SendEmail
4

2 に答える 2

1

このスタックオーバーフローの投稿では、MimeMessage を使用して送信者を設定する必要があることが説明されています。addFrom()と、「mail.smtp.host」を設定する必要があること

import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

import java.util.Properties;


    public class SendEmail {


        public static void main(String[] args) throws Exception{
            String smtpServer  = "msg.abc.acme.cp,";
            int port           = 25;
            String userid      = "authorized.person"; 
            String password    = "password";   
            String contentType = "text/html";
            String subject     = "test: bounce an email to a different address from the sender";
            String from        = "joe@acme.com";
            String to          = "bogus@fauxmail.com";
            String bounceAddr  = "bounce@acme.com";
            String body        = "Test: get message to bounce to a separate email address";

            Properties props   = new Properties();

            props.put("mail.transport.protocol", "smtp");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.starttls.enable","true");
            props.put("mail.smtp.host", smtpServer);
            props.put("mail.smtp.from", bounceAddr);

            Session mailSession = Session.getInstance(props);

            // Get runtime more runtime output when attempting to send an email
            //mailSession.setDebug(true);

            MimeMessage message = new MimeMessage(mailSession);
            //message.setFrom(new InternetAddress(from));
            message.addFrom(InternetAddress.parse(from)); 
            message.setRecipients(Message.RecipientType.TO, to);
            message.setSubject(subject);
            message.setContent(body,contentType);



            Transport transport = mailSession.getTransport();
            try{
                System.out.println("Sending ....");
                transport.connect(smtpServer, port, userid, password);
                transport.sendMessage(message,message.getRecipients(Message.RecipientType.TO));
                System.out.println("Sending done ...");
            }
            catch(Exception e) {
                System.err.println("Error Sending: ");
                e.printStackTrace();


            }
            transport.close();
        }// end function main()

    }// end class SendEmail
于 2013-08-16T14:27:03.513 に答える