私は、javax mail APIの新しいユーザーです。 (のjavax.mail。*)Javax Mail APIで任意の送信者アドレスを使用できるのは一般的ですか?
バニラ例を試すことで、私が企業のメールサーバー上でこれを試してみたし、それが動作私がsetFrom()
を使用してアドレスを設定することで、認証なしで任意のアドレスからメールを送信することができそうです警告なしに。
これは私の常識と矛盾しています。私は、電子メールアカウントにログインしてそこから電子メールを送信する必要があると矛盾しています。
これはjavaxメールAPIと電子メールサーバーの一般的な動作ですか?
これは私が使用したコードです。
import java.io.UnsupportedEncodingException;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.junit.Before;
import org.junit.Test;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
public class EmailTest {
JavaMailSenderImpl mailSender;
MimeMessage message;
MimeMessageHelper helper;
@Before
public void setUp() {
mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.company.com"); //<some smtp host>
message = mailSender.createMimeMessage();
helper = new MimeMessageHelper(message);
}
@Test
public void sendEmail() {
try {
helper.setFrom("[email protected]", "john doe");
helper.setTo("[email protected]");
helper.setSubject("test subject");
helper.setText("Test Text");
mailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
はい、これはSMTPプロトコルの仕組みです。送信者アドレスを認証する必要は全くありません。 – RealSkeptic
実際には、セキュリティ保護されていないSMTPサーバーでは、誰でも誰でもいると主張することができます。私は、電子メールを偽装して高校の友人にいたずらをするという思い出が好きです。しかし、1990年代になってしまった今、SMTPサーバーを使って実際に認証を行わなくても、これはおそらく重要なセキュリティホールですが、あなたの懸念事項ではありません。これはSMTPがもともとどのように設計されているからですか? – dcsohl