我有一个联系我们表单在我的网页上,用户可以输入他们的姓名,电子邮件地址和消息发送给我的电子邮件。但是,我没有让用户登录到他们的邮件帐户。是否有可能在不登录的情况下通过他们的邮寄帐户生成和发送电子邮件?
在后端,当我设置From Email的值时,它被忽略,用于发送电子邮件的电子邮件地址是redacted@gmail.comMailSender.java
@Autowired
private JavaMailSender mailSender;
public void sendEmail(String fromEmail, String body, String subject) throws MessagingException{
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true);
message.setFrom(fromEmail);
message.setTo("redacted@gmail.com");
message.setText(body);
message.setSubject(subject);
message.setSentDate(new Date());
mailSender.send(mimeMessage);
System.out.println("Mail sent successfully");
}
application.yaml
spring:
mail:
host: "smtp.gmail.com"
port: 587
username: redacted@gmail.com
password: redacted
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
from
部分不是您的实际用户名或邮件地址。它只是"显示名称"给收件人。
根据邮件提供商的不同,from
部分必须与您的用户名相同。在其他情况下,可以使用任意的from
发送邮件。但是大多数提供者会拒绝这样做,因为如果接收方收到来自您的邮件,但是他们的邮件应用程序显示support@microsoft.com
,那么这可能会给接收方带来安全风险。;)
from
部分也可以用来添加一个真实的名字,除了邮件地址需要一个特殊的格式(如My Name<redacted@gmail.com>
)。在Java中可以这样做:
message.setFrom(new InternetAddress("redacted@gmail.com", "My Name"));
但这同样高度依赖于您的邮件提供商。有些会自动为您设置。有些将要求它与您的用户帐户数据相同。有些可以让你发送任何你想要的。
Btw:同样适用于sentDate
。我不认为Google允许你提供自定义日期,相反,他们会覆盖它。