gpt4 book ai didi

java - 如何使用 Spring 4 使用动态凭证发送电子邮件

转载 作者:太空宇宙 更新时间:2023-11-04 11:22:01 24 4
gpt4 key购买 nike

我在 appconfig 中注册了以下 bean。如何在我的服务中使用构造函数注入(inject)来使用这个 bean?我需要动态传递用户名、密码。

@Bean
public JavaMailSender getMailSender(JavaMailerDTO javaMailer){
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();

mailSender.setJavaMailProperties(mailProperties(javaMailer));

mailSender.setHost(javaMailer.getHost());
mailSender.setUsername(javaMailer.getEmailId());
mailSender.setPassword(javaMailer.getEmailPassword());
mailSender.setPort(Integer.parseInt(javaMailer.getPort()));
return mailSender;
}

private Properties mailProperties(JavaMailerDTO javaMailer){
Properties properties = new Properties();
properties.put(ApplicationConstant.MAIL_AUTH, ApplicationConstant.TRUE);
// .....
properties.put(ApplicationConstant.MAIL_SMTPPORT,javaMailer.getPort());
return properties;
}

您能帮我使用上述 bean Autowiring 发送电子邮件吗?

最佳答案

我建议您创建一个工厂,它将为您构建一个单独的实例 JavaMailSender 以用于不同的凭据。

类似这样的事情:

public interface MailSenderFactory {
JavaMailSender getSender(String email, String password);
}

@Component
public static class MailSenderFactoryImpl implements MailSenderFactory {

private final JavaMailerDTO javaMailer;

@Autowired
public MailSenderFactoryImpl(JavaMailerDTO javaMailer) {
this.javaMailer = javaMailer;
}

@Override
public JavaMailSender getSender(final String email, final String password) {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();

mailSender.setJavaMailProperties(mailProperties(javaMailer));

mailSender.setHost(javaMailer.getHost());
mailSender.setUsername(email);
mailSender.setPassword(password);
mailSender.setPort(Integer.parseInt(javaMailer.getPort()));
return mailSender;
}

private Properties mailProperties(JavaMailerDTO javaMailer) {
Properties properties = new Properties();
properties.put(ApplicationConstant.MAIL_AUTH, ApplicationConstant.TRUE);
// .....
properties.put(ApplicationConstant.MAIL_SMTPPORT, javaMailer.getPort());
return properties;
}
}

现在你可以像这样使用它:

@Service
public static class MailService {
private final MailSenderFactory mailSenderFactory;

public MailService(MailSenderFactory mailSenderFactory) {
this.mailSenderFactory = mailSenderFactory;
}

public void sendMail() {
JavaMailSender mailSender = mailSenderFactory.getSender("john.smith@gmail.com", "123456");
mailSender.send(...);
}
}

关于java - 如何使用 Spring 4 使用动态凭证发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44810573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com