合作计算 / 邮件
邮件和短信服务的基本模板
Requires
- php: ^7.2.5|^8.0
- twilio/sdk: ^6.43
This package is not auto-updated.
Last update: 2024-09-24 16:38:37 UTC
README
Laravel 邮件和短信服务的基本模板和实现。
最低支持的 Laravel 版本: laravel 7, laravel 8 和 laravel 9
使用 composer 的安装命令
composer require cooperativecomputing/mailing-and-sms-template
环境变量存储在名为 keys.txt 的文本文件中
在您的 HTML 表单 Blade 文件中使用 @csrf 关键字,因为 Laravel 使用它来防止跨站请求伪造,并且在您从表单发送任何请求之前是必需的。
app.php
添加服务提供者
/*
* Package Service Providers...
*/
CooperativeComputing\Services\EmailingServiceProvider::class,
CooperativeComputingSMS\Services\SmsServiceProvider::class,
发布短信和邮件服务
php artisan vendor:publish --tag=CC-Emails
php artisan vendor:publish --tag=CC-SMS
composer.json
在 composer json 文件中,在 autoload
--> psr-4
下添加以下内容以添加邮件模板
"CooperativeComputing\\Routes\\": "routes/",
"CooperativeComputing\\Controllers\\": "app/Http/Controllers/",
"CooperativeComputing\\Mail\\": "app/Mail/",
在 composer json 文件中,在 autoload
--> psr-4
下添加以下内容以添加短信模板
"CooperativeComputingSMS\\Routes\\": "routes/",
"CooperativeComputingSMS\\Controllers\\": "app/Http/Controllers/"
在终端中运行 composer du
命令。
接下来执行以下命令
php artisan install:email
php artisan install:sms
上述命令将安装包文件夹中的文件到您的主项目文件中。
发送邮件
在您的 .env
文件中添加环境变量
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=YOUR_USERNAME_FROM_MAILTRAP
MAIL_PASSWORD=YOUR_PASSWORD_FROM_MAILTRAP
MAIL_ENCRYPTION=tls
发送给单个用户
public function sendEmail()
{
$validator = [
'sender' => 'sender@mail.com',
'to' => 'receiver@mail.com',
'subject' => 'some subject',
'message' => 'A message from sender',
];
Mail::queue((new MailEmails($validator))->onQueue('emails'));
return "mail has been sent";
}
发送给多个用户
public function sendEmail()
{
$validator = [
'sender' => 'sender@mail.com',
'to' => ['receiver_one@mail.com', 'receiver_two@mail.com', 'receiver_three@mail.com'],
'subject' => 'some subject',
'message' => 'A message from sender',
];
Mail::queue((new MailEmails($validator))->onQueue('emails'));
return "mail has been sent";
}
可邮寄文件
发送邮件
public $validator;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($validator)
{
$this->validator = $validator;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->from($this->validator['sender'])
->subject($this->validator['subject'])
->to($this->validator['to'])
->markdown('email-welcome');
}
发送单个附件
public function build()
{
return $this->from($this->validator['sender'])
->subject($this->validator['subject'])
->to($this->validator['to'])
->attach(public_path('<single attachment>'))
->markdown('email-welcome');
}
发送多个附件
public function sendEmail()
{
$attachments = [
public_path('<attachment 1>'),
public_path('<attachment 2>'),
public_path('<attachment 3>'),
];
$validator = [
'sender' => 'sender@mail.com',
'to' => 'receiver@mail.com',
'subject' => 'some subject',
'message' => 'A message from sender',
'attachments' => $attachments
];
Mail::queue((new MailEmails($validator))->onQueue('emails'));
return "mail has been sent";
}
在电子邮件文件内部
public function build()
{
$this->from($this->validator['sender'])
->subject($this->validator['subject'])
->to($this->validator['to'])
->markdown('email-welcome');
foreach ($this->validator['attachments'] as $attachment) {
$this->attach($attachment);
}
return $this;
}
在您的邮件中添加更多选项
return $this->from($this->validator['sender'])
->subject($this->validator['subject'])
->to($this->validator['to'])
->cc($this->validator['people'])
->bcc($this->validator['private_people'])
->attach(base_path('<path of any file>'))
->markdown('email-welcome');
发送短信
在您的 .env
文件中添加环境变量
TWILIO_ACCOUNT_SID=YOUR_TWILIO_SID_FROM_TWILIO
TWILIO_AUTH_TOKEN=YOUR_TWILIO_AUTH_TOKEN_FROM_TWILIO
TWILIO_SENDER=YOUR_TWILIO_PHONE_NUMBER_FROM_TWILIO
对于 Twilio 模板,我使用 Laravel 的表单请求方法,因为我不能公开我的个人手机号码。
注意
在实际注册号码后发送短信时,请确保使用国家代码,例如,在巴基斯坦,我们使用 +92
,否则 Twilio 无法发送短信。
短信控制器
public function sendSMS()
{
$otp = $this->generateOTP();
$request = (object) [
'sms_message' => 'Text message with OTP: '. $otp,
'sms_receiver' => '<The registered phone number(s)>',
];
try {
$sid = config('sms.sid', 'some_sid');
$sender = config('sms.sender', 'some_sender');
$authToken = config('sms.auth', 'some_token');
$twilio = new Client($sid, $authToken);
$twilio->messages->create(
$request->sms_receiver,
[
"body" => $request->sms_message,
"from" => $sender,
"mediaUrl" => ["https://demo.twilio.com/owl.png"]
]
);
return 'SMS was sent';
} catch (TwilioException $e) {
throw $e;
}
}
public function generateOTP()
{
return random_int(0,99999);
}
messages->create()
这是 Twilio 用于创建短信并发送的方法。
第一个参数接受接收者的手机号码,第二个参数是主要的短信本身。
body
这是您的短信的主要内容或要发送的文本from
这是短信的发送者,对于 Twilio,您必须注册您的号码mediaUrl
这是一个可选字段,我们可以使用它发送一些媒体 URL
更多与 Laravel 的 Twilio 示例
https://www.twilio.com/blog/create-sms-portal-laravel-php-twilio