- Continue to use the domain hosted on cf from the email receiving tutorial.
- DKIM (optional)
Here we will manually create it:
- Go to the Cloudflare dashboard at
https://dash.cloudflare.com/
, click onWorkers and Pages
in the sidebar. - Click
Create an app
->Create a worker
-> Name it as you wish, for example,sender
-> ClickDeploy
. - Enter the worker and click
Edit code
. Paste the following code - In the worker's
Settings
->Variables
, add the following variables:
Variable Name | Description | Example |
---|---|---|
DKIM_DOMAIN | Optional, domain suffix | vmail.dev |
DKIM_PRIVATE_KEY | Optional, DKIM private key | MIIEpQIBAAKCAQEA... |
DKIM_SELECTOR | Optional, fixed value mailchannels |
mailchannels |
The DKIM_PRIVATE_KEY
will be explained later on how to obtain it.
Remember the address assigned to the worker, i.e., https://<worker-name>.<your-name>.workers.dev
, which will be used later.
DKIM is an email authentication technology that can verify the identity of the email sender.
Execute the following command in the terminal to generate a DKIM private key, refer to Adding a DKIM Signature:
openssl genrsa 2048 | tee private_key.pem | openssl rsa -outform der | openssl base64 -A > private_key.txt
echo -n "v=DKIM1;p=" > dkim_record.txt && openssl rsa -in private_key.pem -pubout -outform der | openssl base64 -A >> dkim_record.txt
These two commands will generate 3 files:
private_key.pem
: Private key file.private_key.txt
: Private key file in base64 encoding.dkim_record.txt
: DKIM record.
The content of the private_key.txt
file is the value for the DKIM_PRIVATE_KEY
variable in the previous step.
Enter the Cloudflare domain control console, select your domain -> Click DNS
, next, you need to add 3 TXT records and modify 1 TXT record.
The new ones are as follows:
Type | Name | Value | Remarks |
---|---|---|---|
TXT | _dmarc |
v=DMARC1; p=reject; adkim=s; aspf=s; rua=mailto:YYY; ruf=mailto:YYY pct=100; fo=1; |
Fixed value |
TXT | mailchannels._domainkey |
v=DKIM1;p=MIIEpQIBAAKCAQEA... |
The value is the content of the dkim_record.txt file |
TXT | _mailchannels |
v=mc1 cfid=yesmore.workers.dev |
Replace yesmore with your account name |
The one that needs modification (the TXT record value is example.com
, i.e., your domain name):
Type | Name | Value | Remarks |
---|---|---|---|
TXT | example.com |
v=spf1 include:_spf.mx.cloudflare.net include:relay.mailchannels.net ~all |
Replace the value with this, leave the rest unchanged |
In the end, there will be a total of 4 TXT records:
Verify if the DKIM record is configured successfully at dkim-record-checker.
Method one: Open the webpage https://<sender-name>.<your-name>.workers.dev/submit
to verify if sending is normal.
Method two: Send via API
- Request URL
https://<sender-name>.<your-name>.workers.dev
- Request Method
POST
- Request Body:
{
"from": {
"email": "[email protected]",
"name": "Sender"
},
"personalizations": [
{
"to": [
{
"email": "[email protected]",
"name": "Recipient"
}
]
}
],
"subject": "Email Subject",
"content": [
{
"type": "text/plain",
"value": "Email Content"
}
]
}
Example:
This project uses the method two from step four to send emails via API.
In the Vercel project console, go to Settings
-> Environment Variables
, and add the following variable:
- SEND_WORKER_URL: The value should be
https://<sender-name>.<your-name>.workers.dev
After adding, trigger a redeployment.