通过使用Java邮件,用户尝试实现通过邮件接收查询的功能。但是,如果使用setFrom(),则它将使用经过身份验证的邮件地址而不是您设置的电子邮件覆盖。
当用户输入自己的邮件时,请将其邮件放入setFrom()中。但是每时每刻都会被覆盖。
我尝试将参数值作为字符串使用,但是没有用。
发送邮件的代码使用ajax。
context-mail.xml
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com" />
<property name="port" value="587" />
<property name="username" value="email" />
<property name="password" value="password" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
</props>
</property>
</bean>
控制者
@RequestMapping(value = "/mail")
public void mailSend(HttpServletRequest request, HttpServletResponse response,
ModelMap model, @RequestParam Map param) throws Exception {
SessionVO session = getSessionVO(request, response);
final Map<String, String> qna = (Map<String, String>)((List)qnaService.selectQna(param).get("qnaResultList")).get(0);
final List<Map> qnaFile= qnaService.selectQnaFile(param);
final Map[] file = new HashMap[qnaFile.size()];
for(int i=0;i<qnaFile.size();i++){
FileVO vo=new FileVO();
vo.setFileId((String)qnaFile.get(i).get("fileId"));
file[i]=fileService.getimgfile(vo, response);
}
logger.info(qna+"");
logger.info(qnaFile+"");
final MimeMessagePreparator preparator = new MimeMessagePreparator() {
@Override
public void prepare(MimeMessage mimeMessage) throws Exception {
final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
helper.setSentDate(new Date());
helper.setFrom(qna.get("email"), qna.get("userName")); //
helper.setTo(new InternetAddress("auth email"));
helper.setSubject(qna.get("userName")+"-"+qna.get("qnaType"));
helper.setText(qna.get("content"), true);
for (Map m : file) {
helper.addAttachment((String)m.get("fileNm"), (File)m.get("file"));
}
}
};
mailSender.send(preparator);
}
没有错误,但是发件人的邮件地址是错误的。
最佳答案
通常,Gmail(和大多数邮件服务器)将只允许您使用与您的帐户凭据相对应的发件人地址。如果要使用其他“发件人”地址,请参见此Gmail help page。