2014年6月4日水曜日

[Web]Amazon web service with java 筆記


首先取得AWS sdk。 位置:
http://docs.aws.amazon.com/ses/latest/DeveloperGuide/download-aws-sdk.html


接著注意的是需要在你的java project匯入aws-java-sdk-1.7.5.jar跟 3rd party的lib。需要的全部都在AWS sdk的3rd-party的資料夾裡面。
注意:要是原本的project就有用到跟aws sdk裡面相同的jar(例如apache)的話,請跟sdk裡面附的比較版本號碼,留下比較新的。 新舊版混放在一起有可能會導致編譯錯誤。



準備文字檔。檔名:AwsCredentials.properties,放在java project的根目錄。
內容如下:
#這是註解
accessKey=[跟aws註冊後獲得的access key]
secretKey=[跟aws註冊後獲得的secret key]


然後是sample程式碼:
import java.io.IOException;
import com.amazonaws.services.simpleemail.*;
import com.amazonaws.services.simpleemail.model.*;
import com.amazonaws.auth.PropertiesCredentials;
import com.amazonaws.regions.*;

public class AmazonSESSample {
 
    static final String FROM = "SENDER@EXAMPLE.COM";  // Replace with your "From" address. This address must be verified.
    static final String TO = "RECIPIENT@EXAMPLE.COM"; // Replace with a "To" address. If you have not yet requested
                                                      // production access, this address must be verified.
    static final String BODY = "This email was sent through Amazon SES by using the AWS SDK for Java.";
    static final String SUBJECT = "Amazon SES test (AWS SDK for Java)";
  

/*
 * 利用AWS的的寄信功能,必須執行寄出信箱認證。應該是為了防止利用垃圾信程式亂寄。
 * 動作流程:call這個動作,會在strEmailAdd的指定的email位置收到認證信。在認證信裡面會有認證連結。
 * 點選認證連結,就會執行認證。成功之後,FROM這個參數就可以使用這個strEmailAdd所指定的email位置。
 * 只要執行一次即可。
 */
 public static void VerifyEmailViaAWS(String strEmailAdd)
 {
  File file = new File("AwsCredentials.properties");
  PropertiesCredentials credentials;
  try {
   credentials = new PropertiesCredentials(file);
      AmazonSimpleEmailServiceClient client = new AmazonSimpleEmailServiceClient(credentials);
      VerifyEmailAddressRequest verifyEmailAddressRequest = new VerifyEmailAddressRequest();
      verifyEmailAddressRequest.withEmailAddress(strEmailAdd);
      client.verifyEmailAddress(verifyEmailAddressRequest);
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IllegalArgumentException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   

public static void main(String[] args) throws IOException
{
     
        // Your AWS credentials are stored in the AwsCredentials.properties file within the project.
        // You entered these AWS credentials when you created a new AWS Java project in Eclipse.

        //File file = new File("AwsCredentials.properties");
        //PropertiesCredentials credentials = new PropertiesCredentials(file);  //原本Amazon所提供的sourcecode裡面用的方法是如下面寫的「AmazonSESSample.class.getResourceAsStream("AwsCredentials.properties");」。若是發現amazon的方法抓不到AwsCredentials.properties檔案的話,可以用註解裡面寫的這個方法。
    PropertiesCredentials credentials = new PropertiesCredentials(
          AmazonSESSample.class
                        .getResourceAsStream("AwsCredentials.properties"));
        
        // Retrieve the AWS Access Key ID and Secret Key from AwsCredentials.properties.
        credentials.getAWSAccessKeyId();
        credentials.getAWSSecretKey();
    
        // Construct an object to contain the recipient address.
        Destination destination = new Destination().withToAddresses(new String[]{TO});
        
        // Create the subject and body of the message.
        Content subject = new Content().withData(SUBJECT);
        Content textBody = new Content().withData(BODY); 
        Body body = new Body().withText(textBody);
        
        // Create a message with the specified subject and body.
        Message message = new Message().withSubject(subject).withBody(body);
        
        // Assemble the email.
        SendEmailRequest request = new SendEmailRequest().withSource(FROM).withDestination(destination).withMessage(message);
        
        try
        {        
            System.out.println("Attempting to send an email through Amazon SES by using the AWS SDK for Java...");
        
            // Instantiate an Amazon SES client, which will make the service call with the supplied AWS credentials.
            AmazonSimpleEmailServiceClient client = new AmazonSimpleEmailServiceClient(credentials);
               
            // Choose the AWS region of the Amazon SES endpoint you want to connect to. Note that your production 
            // access status, sending limits, and Amazon SES identity-related settings are specific to a given 
            // AWS region, so be sure to select an AWS region in which you set up Amazon SES. Here, we are using 
            // the US East (N. Virginia) region. Examples of other regions that Amazon SES supports are US_WEST_2 
            // and EU_WEST_1. For a complete list, see http://docs.aws.amazon.com/ses/latest/DeveloperGuide/regions.html 
            Region REGION = Region.getRegion(Regions.US_EAST_1);  //指定使用amazon的伺服器的位置。
            client.setRegion(REGION);
       
            // Send the email.
            client.sendEmail(request);  
            System.out.println("Email sent!");
        }
        catch (Exception ex) 
        {
            System.out.println("The email was not sent.");
            System.out.println("Error message: " + ex.getMessage());
        }
    }
}

0 件のコメント:

コメントを投稿