Skip to content

Commit bfbb904

Browse files
authored
Merge pull request #2112 from tencentcloudstack/feat/ses-support
feat: supprot ses
2 parents 7a5866a + 3c35f11 commit bfbb904

File tree

58 files changed

+8593
-298
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+8593
-298
lines changed

.changelog/2112.txt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
```release-note:new-data-source
2+
tencentcloud_ses_receivers
3+
```
4+
5+
```release-note:new-data-source
6+
tencentcloud_ses_send_tasks
7+
```
8+
9+
```release-note:new-data-source
10+
tencentcloud_ses_email_identities
11+
```
12+
13+
```release-note:new-data-source
14+
tencentcloud_ses_black_email_address
15+
```
16+
17+
```release-note:new-data-source
18+
tencentcloud_ses_statistics_report
19+
```
20+
21+
```release-note:new-data-source
22+
tencentcloud_ses_send_email_status
23+
```
24+
25+
```release-note:new-resource
26+
tencentcloud_ses_receiver
27+
```
28+
29+
```release-note:new-resource
30+
tencentcloud_ses_send_email
31+
```
32+
33+
```release-note:new-resource
34+
tencentcloud_ses_batch_send_email
35+
```
36+
37+
```release-note:new-resource
38+
tencentcloud_ses_verify_domain
39+
```

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ require (
4242
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.693
4343
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544
4444
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.711
45-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.737
45+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.743
4646
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.589
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.692
@@ -72,7 +72,7 @@ require (
7272
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.657
7373
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.542
7474
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.729
75-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.529
75+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.743
7676
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486
7777
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.689
7878
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.737

go.sum

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -879,12 +879,15 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.731 h1:CEVw
879879
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.731/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
880880
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.732 h1:19TNf4ATZQLFDSKNsJ+FE86rc2HlqkFeIO6wNw2Hj6g=
881881
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.732/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
882+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.734/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
882883
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.735 h1:LJF4eHQdBd5fvjoIGrgB19knAZ98besEzskr0uyypLQ=
883884
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.735/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
884885
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.736 h1:kDxUSuxipDOYAgssgXVf33WT2g6UyY+67yVMsVHPGiU=
885886
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.736/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
886887
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.737 h1:Y/mD9PJbMkjzJiuZsJnzUk31OPCXvch7WSFbs9kKRyw=
887888
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.737/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
889+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.743 h1:P6Pql3W1aEtHK4l2W8L1ExcZ0pA/mlgr1c6K6ROkSCs=
890+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.743/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
888891
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624 h1:nEZqsoqt1pEoaP9JjkHQy3/H00suCfzlHW1qOm2nYD8=
889892
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624/go.mod h1:+TXSVyeKwt1IhZRqKPbTREteBcP+K07Q846/ilNzLWA=
890893
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.589 h1:LZihgirMH0vsaGScYexxwY0fTss9vHaSZs/YOQUVESg=
@@ -953,6 +956,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.729 h1:UWTpLpN
953956
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.729/go.mod h1:P5cLcaPdmOiRhv79OAvAKf+9JTg/64N7ZxwZHBW2mZA=
954957
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.529 h1:NezuBQEG7ihXbwueREo4qavBAo6ZcHuWGZt1dR+VdKc=
955958
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.529/go.mod h1:Xfmf4Rq4J2ukz6NoEwpADQS5ws3By3KDPemCQeeMF+M=
959+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.743 h1:loQWl2qSlclwPrgAyvkIODDXbwy3ZPynAxiMf+TJdjY=
960+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.743/go.mod h1:oqFIxpm3Pu3cT9qAALFw2VqcC4g/tVyWGOkjVkpJakA=
956961
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486 h1:eHLaL+hl5X5f8Apuf2SGVclO3MRev/E3AfA/0aZQGUA=
957962
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486/go.mod h1:MSsho0YlAsoPCOMqdBfwqGd/SMQ0FTGh0a6emBy2X+g=
958963
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.689 h1:SWmtQo+FO+QneHfwcl7u/4YnSwgxVjXNyJMn9+WlzmI=
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
/*
2+
Use this data source to query detailed information of ses black_email_address
3+
4+
Example Usage
5+
6+
```hcl
7+
data "tencentcloud_ses_black_email_address" "black_email_address" {
8+
start_date = "2020-09-22"
9+
end_date = "2020-09-23"
10+
email_address = "xxx@mail.qcloud.com"
11+
task_id = "7000"
12+
}
13+
```
14+
*/
15+
package tencentcloud
16+
17+
import (
18+
"context"
19+
20+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
21+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
22+
ses "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses/v20201002"
23+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
24+
)
25+
26+
func dataSourceTencentCloudSesBlackEmailAddress() *schema.Resource {
27+
return &schema.Resource{
28+
Read: dataSourceTencentCloudSesBlackEmailAddressRead,
29+
Schema: map[string]*schema.Schema{
30+
"start_date": {
31+
Required: true,
32+
Type: schema.TypeString,
33+
Description: "Start date in the format of `YYYY-MM-DD`.",
34+
},
35+
36+
"end_date": {
37+
Required: true,
38+
Type: schema.TypeString,
39+
Description: "End date in the format of `YYYY-MM-DD`.",
40+
},
41+
42+
"email_address": {
43+
Optional: true,
44+
Type: schema.TypeString,
45+
Description: "You can specify an email address to query.",
46+
},
47+
48+
"task_id": {
49+
Optional: true,
50+
Type: schema.TypeString,
51+
Description: "You can specify a task ID to query.",
52+
},
53+
54+
"black_list": {
55+
Computed: true,
56+
Type: schema.TypeList,
57+
Description: "List of blocklisted addresses.",
58+
Elem: &schema.Resource{
59+
Schema: map[string]*schema.Schema{
60+
"bounce_time": {
61+
Type: schema.TypeString,
62+
Computed: true,
63+
Description: "Time when the email address is blocklisted.",
64+
},
65+
"email_address": {
66+
Type: schema.TypeString,
67+
Computed: true,
68+
Description: "Blocklisted email address.",
69+
},
70+
},
71+
},
72+
},
73+
74+
"result_output_file": {
75+
Type: schema.TypeString,
76+
Optional: true,
77+
Description: "Used to save results.",
78+
},
79+
},
80+
}
81+
}
82+
83+
func dataSourceTencentCloudSesBlackEmailAddressRead(d *schema.ResourceData, meta interface{}) error {
84+
defer logElapsed("data_source.tencentcloud_ses_black_email_address.read")()
85+
defer inconsistentCheck(d, meta)()
86+
87+
logId := getLogId(contextNil)
88+
89+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
90+
91+
paramMap := make(map[string]interface{})
92+
if v, ok := d.GetOk("start_date"); ok {
93+
paramMap["StartDate"] = helper.String(v.(string))
94+
}
95+
96+
if v, ok := d.GetOk("end_date"); ok {
97+
paramMap["EndDate"] = helper.String(v.(string))
98+
}
99+
100+
if v, ok := d.GetOk("email_address"); ok {
101+
paramMap["EmailAddress"] = helper.String(v.(string))
102+
}
103+
104+
if v, ok := d.GetOk("task_id"); ok {
105+
paramMap["TaskID"] = helper.String(v.(string))
106+
}
107+
108+
service := SesService{client: meta.(*TencentCloudClient).apiV3Conn}
109+
110+
var blackList []*ses.BlackEmailAddress
111+
112+
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
113+
result, e := service.DescribeSesBlackEmailAddressByFilter(ctx, paramMap)
114+
if e != nil {
115+
return retryError(e)
116+
}
117+
blackList = result
118+
return nil
119+
})
120+
if err != nil {
121+
return err
122+
}
123+
124+
ids := make([]string, 0, len(blackList))
125+
tmpList := make([]map[string]interface{}, 0, len(blackList))
126+
127+
if blackList != nil {
128+
for _, blackEmailAddress := range blackList {
129+
blackEmailAddressMap := map[string]interface{}{}
130+
131+
if blackEmailAddress.BounceTime != nil {
132+
blackEmailAddressMap["bounce_time"] = blackEmailAddress.BounceTime
133+
}
134+
135+
if blackEmailAddress.EmailAddress != nil {
136+
blackEmailAddressMap["email_address"] = blackEmailAddress.EmailAddress
137+
}
138+
139+
ids = append(ids, *blackEmailAddress.EmailAddress)
140+
tmpList = append(tmpList, blackEmailAddressMap)
141+
}
142+
143+
_ = d.Set("black_list", tmpList)
144+
}
145+
146+
d.SetId(helper.DataResourceIdsHash(ids))
147+
output, ok := d.GetOk("result_output_file")
148+
if ok && output.(string) != "" {
149+
if e := writeToFile(output.(string), tmpList); e != nil {
150+
return e
151+
}
152+
}
153+
return nil
154+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
)
8+
9+
// go test -test.run TestAccTencentCloudSesBlackEmailAddressDataSource_basic -v
10+
func TestAccTencentCloudSesBlackEmailAddressDataSource_basic(t *testing.T) {
11+
t.Parallel()
12+
resource.Test(t, resource.TestCase{
13+
PreCheck: func() {
14+
testAccStepSetRegion(t, "ap-hongkong")
15+
testAccPreCheckBusiness(t, ACCOUNT_TYPE_SES)
16+
},
17+
Providers: testAccProviders,
18+
Steps: []resource.TestStep{
19+
{
20+
Config: testAccSesBlackEmailAddressDataSource,
21+
Check: resource.ComposeTestCheckFunc(
22+
testAccCheckTencentCloudDataSourceID("data.tencentcloud_ses_black_email_address.black_email_address"),
23+
resource.TestCheckResourceAttrSet("data.tencentcloud_ses_black_email_address.black_email_address", "black_list.#"),
24+
resource.TestCheckResourceAttrSet("data.tencentcloud_ses_black_email_address.black_email_address", "black_list.0.bounce_time"),
25+
resource.TestCheckResourceAttrSet("data.tencentcloud_ses_black_email_address.black_email_address", "black_list.0.email_address"),
26+
),
27+
},
28+
},
29+
})
30+
}
31+
32+
const testAccSesBlackEmailAddressDataSource = `
33+
34+
data "tencentcloud_ses_black_email_address" "black_email_address" {
35+
start_date = "2020-09-22"
36+
end_date = "2023-09-23"
37+
email_address = "terraform-tf@gmail.com"
38+
}
39+
40+
`

0 commit comments

Comments
 (0)