你需要一个Amazon SES SMTP用户名和密码才能访问亚马逊SES的SMTP界面。您可以使用同一组的SMTP认证在所有AWS的地区。

重要
您的SMTP用户名和密码都是不一样的您的AWS访问密钥和秘密密钥的访问。不要试图用你的AWS凭据自己对SMTP端点进行身份验证。有关凭据的详细信息,请参阅使用凭证与亚马逊SES。
有两种方法可以生成您的SMTP认证。您可以使用Amazon SES控制台或者您也可以通过您的AWS凭据您的SMTP认证。

使用Amazon SES控制台,如果产生您的SMTP认证:

你想用最简单的方法,让您的SMTP认证。

你不需要使用代码或脚本来自动化的SMTP凭证生成。

生成您的AWS凭据,如果您的SMTP认证:

您有一个现有的AWS身份和访问管理(IAM),您创建使用IAM的用户界面,并且您希望该用户能够发送使用亚马逊SES的SMTP界面的电子邮件。

您想使用的代码或脚本来自动化的SMTP凭证生成。

有关每个方法的信息,请参阅获取使用亚马逊SES控制台亚马逊SES SMTP凭证 ,并获得亚马逊SES SMTP凭证所转换的AWS凭据。

获得亚马逊SES SMTP凭证使用亚马逊SES控制台

当您通过使用亚马逊SES控制台生成的SMTP认证,亚马逊SES控制台创建具有适当的政策的IAM用户拨打亚马逊SES和为您提供了与该用户相关联的SMTP认证。


一个IAM的用户可以创建亚马逊SES的SMTP认证,但IAM用户的策略必须给他们允许使用IAM本身,因为亚马逊SES的SMTP认证通过IAM的创建。如果IAM的用户尝试使用控制台来创建亚马逊SES的SMTP凭据,他们没有IAM的权限,他们会得到一个错误,指出“......无权执行IAM:ListUsers ......”在这种情况下,root帐户拥有者的需求修改IAM用户的策略,以使他们能够访问以下IAM行动:“IAM:ListUsers”,“IAM:CREATEUSER”,“IAM:CreateAccessKey”和“IAM:PutUserPolicy”。
创建您的SMTP认证

登录到AWS管理控制台,并在打开的亚马逊SES控制台 https://console.aws.amazon.com/ses

在导航窗格中,单击SMTP设置。

在内容窗格中,单击创建我的SMTP凭证。

在创建用户进行SMTP对话框中,您将看到一个SMTP用户名已经为您填写。您可以接受此建议的用户名或输入一个不同。要继续,请单击 创建。

为SMTP创建用户
点击查看用户SMTP凭证。您的SMTP认证将被显示在屏幕上; 复制它们,并将它们存放在安全的地方。您也可以点击下载证书下载包含您的凭证文件。

为SMTP创建用户
重要
这是,你将能够看到您的SMTP认证的唯一的一次!我们强烈建议您下载这些凭据和与他人分享他们不要。
点击关闭窗口。

如果你想删除您的SMTP认证,请在IAM控制台https://console.aws.amazon.com/iam/home 并删除与您的SMTP凭证所对应的IAM的用户名。要了解更多信息,请访问使用IAM指南。

如果你想改变你的SMTP密码,进入IAM控制台和删除现有的IAM的用户,然后去亚马逊SES控制台来重新生成您的SMTP认证。

获得亚马逊SES SMTP凭证通过将AWS凭据

如果你有设置使用IAM接口的IAM的用户,你需要做以下两个步骤,使用户使用亚马逊SES的SMTP接口发送的电子邮件:

使用本节中提供的算法,他们的AWS凭据获得用户的SMTP认证。用户的SMTP用户名相同的AWS访问密钥ID,所以你只需要生成SMTP密码。

适用于以下政策对IAM的用户:

{“声明”:[{
        “效果”:“允许”,
        “行动”:“SES:SendRawEmail”
        “资源”:“*”
}]}
如需使用Amazon SES与IAM的更多信息,请参阅控制用户访问亚马逊SES。


虽然你可以生成亚马逊SES的SMTP认证的任何现有IAM的用户,我们推荐您为您将使用生成的SMTP密码的AWS凭据的单独用户的IAM安全原因。关于为什么它是很好的做法,创建用户用于特定用途的信息,请IAM的最佳实践。
下面的伪代码显示了转换一个AWS访问密钥,以亚马逊SES SMTP密码算法。

重点= AWS访问密钥;
消息=“SendRawEmail”;
versionInBytes = 0X02;
signatureInBytes = HmacSha256(消息密钥);
signatureAndVer =连接(versionInBytes,signatureInBytes);
smtpPassword = Base64编码(signatureAndVer);
下面是一个例子Java实现,转换一个AWS访问密钥,以亚马逊SES SMTP密码。在你运行的程序,把IAM用户的AWS访问密钥到名为AWS_SECRET_ACCESS_KEY的环境变量。该程序的输出是SMTP密码。该密码,以及在SMTP用户名(也就是相同的AWS访问密钥ID)是用户的亚马逊SES的SMTP认证。

进口javax.crypto.Mac;
进口javax.crypto.spec.SecretKeySpec;
进口javax.xml.bind.DatatypeConverter;

公共类SesSmtpCredentialGenerator {
       私有静态最终字符串KEY_ENV_VARIABLE =“AWS_SECRET_ACCESS_KEY”; //把你的AWS访问密钥在此环境变量。
       私有静态最后字符串消息=“SendRawEmail”; //用于生成HMAC签名。不要修改。
       私有静态最后一个字节版本= 0X02; //版本号。不要修改。

       公共静态无效的主要(字串[] args){
                 
              //从环境变量AWS_SECRET_ACCESS_KEY的AWS访问密钥。
              字符串键= System.getenv(KEY_ENV_VARIABLE);           
              如果(键== NULL)
              {
                 System.out.println(“错误:无法找到环境变量AWS_SECRET_ACCESS_KEY。”); 
                 System.exit(0);
              }
                   
              //创建从AWS访问密钥的原始字节的HMAC-SHA256键。
              SecretKeySpec的SecretKey =新SecretKeySpec(key.getBytes(),“HmacSHA256”);

              尝试{           
                     //得到一个HMAC-SHA256 MAC实例,并与AWS访问密钥初始化。
                     苹果的mac = Mac.getInstance(“HmacSHA256”);
                     mac.init(的SecretKey);

                     //计算所输入的数据字节的HMAC签名。
                     byte []的rawSignature = mac.doFinal(MESSAGE.getBytes());

                     //前面加上版本号的签名。
                     byte []的rawSignatureWithVersion =新的字节[rawSignature.length + 1];              
                     byte []的versionArray = {版本};               
                     System.arraycopy(versionArray,0,rawSignatureWithVersion,0,1);
                     System.arraycopy(rawSignature,0,rawSignatureWithVersion,1,rawSignature.length);

                     //得到最终的SMTP密码,使用HMAC签名转换为基础64。
                     串smtpPassword = DatatypeConverter.printBase64Binary(rawSignatureWithVersion);      
                     System.out.println(smtpPassword);
              }
              赶上(例外){
                     System.out.println(“错误发生SMTP密码:”+ ex.getMessage());
              }            
       }
}

邮件群发软件 亚云邮件系统