Mail From Args
    data class MailFromArgs(val behaviorOnMxFailure: Output<String>? = null, val domain: Output<String>? = null, val mailFromDomain: Output<String>? = null) : ConvertibleToJava<MailFromArgs> 
Provides an SES domain MAIL FROM resource.
NOTE: For the MAIL FROM domain to be fully usable, this resource should be paired with the aws.ses.DomainIdentity resource. To validate the MAIL FROM domain, a DNS MX record is required. To pass SPF checks, a DNS TXT record may also be required. See the Amazon SES MAIL FROM documentation for more information.
Example Usage
Domain Identity MAIL FROM
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
// Example SES Domain Identity
const exampleDomainIdentity = new aws.ses.DomainIdentity("example", {domain: "example.com"});
const example = new aws.ses.MailFrom("example", {
    domain: exampleDomainIdentity.domain,
    mailFromDomain: pulumi.interpolate`bounce.${exampleDomainIdentity.domain}`,
});
// Example Route53 MX record
const exampleSesDomainMailFromMx = new aws.route53.Record("example_ses_domain_mail_from_mx", {
    zoneId: exampleAwsRoute53Zone.id,
    name: example.mailFromDomain,
    type: aws.route53.RecordType.MX,
    ttl: 600,
    records: ["10 feedback-smtp.us-east-1.amazonses.com"],
});
// Example Route53 TXT record for SPF
const exampleSesDomainMailFromTxt = new aws.route53.Record("example_ses_domain_mail_from_txt", {
    zoneId: exampleAwsRoute53Zone.id,
    name: example.mailFromDomain,
    type: aws.route53.RecordType.TXT,
    ttl: 600,
    records: ["v=spf1 include:amazonses.com -all"],
});Content copied to clipboard
import pulumi
import pulumi_aws as aws
# Example SES Domain Identity
example_domain_identity = aws.ses.DomainIdentity("example", domain="example.com")
example = aws.ses.MailFrom("example",
    domain=example_domain_identity.domain,
    mail_from_domain=example_domain_identity.domain.apply(lambda domain: f"bounce.{domain}"))
# Example Route53 MX record
example_ses_domain_mail_from_mx = aws.route53.Record("example_ses_domain_mail_from_mx",
    zone_id=example_aws_route53_zone["id"],
    name=example.mail_from_domain,
    type=aws.route53.RecordType.MX,
    ttl=600,
    records=["10 feedback-smtp.us-east-1.amazonses.com"])
# Example Route53 TXT record for SPF
example_ses_domain_mail_from_txt = aws.route53.Record("example_ses_domain_mail_from_txt",
    zone_id=example_aws_route53_zone["id"],
    name=example.mail_from_domain,
    type=aws.route53.RecordType.TXT,
    ttl=600,
    records=["v=spf1 include:amazonses.com -all"])Content copied to clipboard
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
    // Example SES Domain Identity
    var exampleDomainIdentity = new Aws.Ses.DomainIdentity("example", new()
    {
        Domain = "example.com",
    });
    var example = new Aws.Ses.MailFrom("example", new()
    {
        Domain = exampleDomainIdentity.Domain,
        MailFromDomain = exampleDomainIdentity.Domain.Apply(domain => $"bounce.{domain}"),
    });
    // Example Route53 MX record
    var exampleSesDomainMailFromMx = new Aws.Route53.Record("example_ses_domain_mail_from_mx", new()
    {
        ZoneId = exampleAwsRoute53Zone.Id,
        Name = example.MailFromDomain,
        Type = Aws.Route53.RecordType.MX,
        Ttl = 600,
        Records = new[]
        {
            "10 feedback-smtp.us-east-1.amazonses.com",
        },
    });
    // Example Route53 TXT record for SPF
    var exampleSesDomainMailFromTxt = new Aws.Route53.Record("example_ses_domain_mail_from_txt", new()
    {
        ZoneId = exampleAwsRoute53Zone.Id,
        Name = example.MailFromDomain,
        Type = Aws.Route53.RecordType.TXT,
        Ttl = 600,
        Records = new[]
        {
            "v=spf1 include:amazonses.com -all",
        },
    });
});Content copied to clipboard
package main
import (
	"fmt"
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53"
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ses"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		// Example SES Domain Identity
		exampleDomainIdentity, err := ses.NewDomainIdentity(ctx, "example", &ses.DomainIdentityArgs{
			Domain: pulumi.String("example.com"),
		})
		if err != nil {
			return err
		}
		example, err := ses.NewMailFrom(ctx, "example", &ses.MailFromArgs{
			Domain: exampleDomainIdentity.Domain,
			MailFromDomain: exampleDomainIdentity.Domain.ApplyT(func(domain string) (string, error) {
				return fmt.Sprintf("bounce.%v", domain), nil
			}).(pulumi.StringOutput),
		})
		if err != nil {
			return err
		}
		// Example Route53 MX record
		_, err = route53.NewRecord(ctx, "example_ses_domain_mail_from_mx", &route53.RecordArgs{
			ZoneId: pulumi.Any(exampleAwsRoute53Zone.Id),
			Name:   example.MailFromDomain,
			Type:   pulumi.String(route53.RecordTypeMX),
			Ttl:    pulumi.Int(600),
			Records: pulumi.StringArray{
				pulumi.String("10 feedback-smtp.us-east-1.amazonses.com"),
			},
		})
		if err != nil {
			return err
		}
		// Example Route53 TXT record for SPF
		_, err = route53.NewRecord(ctx, "example_ses_domain_mail_from_txt", &route53.RecordArgs{
			ZoneId: pulumi.Any(exampleAwsRoute53Zone.Id),
			Name:   example.MailFromDomain,
			Type:   pulumi.String(route53.RecordTypeTXT),
			Ttl:    pulumi.Int(600),
			Records: pulumi.StringArray{
				pulumi.String("v=spf1 include:amazonses.com -all"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}Content copied to clipboard
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.ses.DomainIdentity;
import com.pulumi.aws.ses.DomainIdentityArgs;
import com.pulumi.aws.ses.MailFrom;
import com.pulumi.aws.ses.MailFromArgs;
import com.pulumi.aws.route53.Record;
import com.pulumi.aws.route53.RecordArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }
    public static void stack(Context ctx) {
        // Example SES Domain Identity
        var exampleDomainIdentity = new DomainIdentity("exampleDomainIdentity", DomainIdentityArgs.builder()
            .domain("example.com")
            .build());
        var example = new MailFrom("example", MailFromArgs.builder()
            .domain(exampleDomainIdentity.domain())
            .mailFromDomain(exampleDomainIdentity.domain().applyValue(domain -> String.format("bounce.%s", domain)))
            .build());
        // Example Route53 MX record
        var exampleSesDomainMailFromMx = new Record("exampleSesDomainMailFromMx", RecordArgs.builder()
            .zoneId(exampleAwsRoute53Zone.id())
            .name(example.mailFromDomain())
            .type("MX")
            .ttl("600")
            .records("10 feedback-smtp.us-east-1.amazonses.com")
            .build());
        // Example Route53 TXT record for SPF
        var exampleSesDomainMailFromTxt = new Record("exampleSesDomainMailFromTxt", RecordArgs.builder()
            .zoneId(exampleAwsRoute53Zone.id())
            .name(example.mailFromDomain())
            .type("TXT")
            .ttl("600")
            .records("v=spf1 include:amazonses.com -all")
            .build());
    }
}Content copied to clipboard
resources:
  example:
    type: aws:ses:MailFrom
    properties:
      domain: ${exampleDomainIdentity.domain}
      mailFromDomain: bounce.${exampleDomainIdentity.domain}
  # Example SES Domain Identity
  exampleDomainIdentity:
    type: aws:ses:DomainIdentity
    name: example
    properties:
      domain: example.com
  # Example Route53 MX record
  exampleSesDomainMailFromMx:
    type: aws:route53:Record
    name: example_ses_domain_mail_from_mx
    properties:
      zoneId: ${exampleAwsRoute53Zone.id}
      name: ${example.mailFromDomain}
      type: MX
      ttl: '600'
      records: # Change to the region in which `aws_ses_domain_identity.example` is created
        - 10 feedback-smtp.us-east-1.amazonses.com
  # Example Route53 TXT record for SPF
  exampleSesDomainMailFromTxt:
    type: aws:route53:Record
    name: example_ses_domain_mail_from_txt
    properties:
      zoneId: ${exampleAwsRoute53Zone.id}
      name: ${example.mailFromDomain}
      type: TXT
      ttl: '600'
      records:
        - v=spf1 include:amazonses.com -allContent copied to clipboard
Email Identity MAIL FROM
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
// Example SES Email Identity
const example = new aws.ses.EmailIdentity("example", {email: "user@example.com"});
const exampleMailFrom = new aws.ses.MailFrom("example", {
    domain: example.email,
    mailFromDomain: "mail.example.com",
});Content copied to clipboard
import pulumi
import pulumi_aws as aws
# Example SES Email Identity
example = aws.ses.EmailIdentity("example", email="user@example.com")
example_mail_from = aws.ses.MailFrom("example",
    domain=example.email,
    mail_from_domain="mail.example.com")Content copied to clipboard
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
    // Example SES Email Identity
    var example = new Aws.Ses.EmailIdentity("example", new()
    {
        Email = "user@example.com",
    });
    var exampleMailFrom = new Aws.Ses.MailFrom("example", new()
    {
        Domain = example.Email,
        MailFromDomain = "mail.example.com",
    });
});Content copied to clipboard
package main
import (
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ses"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		// Example SES Email Identity
		example, err := ses.NewEmailIdentity(ctx, "example", &ses.EmailIdentityArgs{
			Email: pulumi.String("user@example.com"),
		})
		if err != nil {
			return err
		}
		_, err = ses.NewMailFrom(ctx, "example", &ses.MailFromArgs{
			Domain:         example.Email,
			MailFromDomain: pulumi.String("mail.example.com"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}Content copied to clipboard
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.ses.EmailIdentity;
import com.pulumi.aws.ses.EmailIdentityArgs;
import com.pulumi.aws.ses.MailFrom;
import com.pulumi.aws.ses.MailFromArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }
    public static void stack(Context ctx) {
        // Example SES Email Identity
        var example = new EmailIdentity("example", EmailIdentityArgs.builder()
            .email("user@example.com")
            .build());
        var exampleMailFrom = new MailFrom("exampleMailFrom", MailFromArgs.builder()
            .domain(example.email())
            .mailFromDomain("mail.example.com")
            .build());
    }
}Content copied to clipboard
resources:
  # Example SES Email Identity
  example:
    type: aws:ses:EmailIdentity
    properties:
      email: user@example.com
  exampleMailFrom:
    type: aws:ses:MailFrom
    name: example
    properties:
      domain: ${example.email}
      mailFromDomain: mail.example.comContent copied to clipboard
Import
Using pulumi import, import MAIL FROM domain using the domain attribute. For example:
$ pulumi import aws:ses/mailFrom:MailFrom example example.comContent copied to clipboard
Constructors
Link copied to clipboard
                fun MailFromArgs(behaviorOnMxFailure: Output<String>? = null, domain: Output<String>? = null, mailFromDomain: Output<String>? = null)
Functions
Properties
Link copied to clipboard
                The action that you want Amazon SES to take if it cannot successfully read the required MX record when you send an email. Defaults to UseDefaultValue. See the SES API documentation for more information.