mirror of
http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore.git
synced 2026-01-15 02:15:06 +08:00
feat(EmailService): 添加邮件附件功能并更新单元测试
- 在 EmailService 类的 sendHtml 方法中添加了附件处理逻辑 - 更新了 EmailServiceTest 单元测试,增加了附件发送的测试用例 - 优化了测试用例的结构,提高了可读性和可维护性
This commit is contained in:
@@ -130,6 +130,8 @@ class EmailService
|
||||
string $html,
|
||||
array $cc = [],
|
||||
array $bcc = [],
|
||||
array $attachmentPaths = [],
|
||||
array $attachments = [],
|
||||
int $priority = Email::PRIORITY_NORMAL
|
||||
): bool {
|
||||
$email = (new Email())
|
||||
@@ -141,6 +143,22 @@ class EmailService
|
||||
->subject($subject)
|
||||
->html($html);
|
||||
|
||||
foreach ($attachmentPaths as $attachmentPath) {
|
||||
if (is_string($attachmentPath)) {
|
||||
$email = $email->attachFromPath($attachmentPath);
|
||||
} else {
|
||||
$email = $email->attachFromPath($attachmentPath['path'], $attachmentPath['name'] ?? null, $attachmentPath['mimeType'] ?? null);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($attachments as $attachment) {
|
||||
if (is_string($attachment)) {
|
||||
$email = $email->attach($attachment);
|
||||
} else {
|
||||
$email = $email->attach($attachment['content'], $attachment['name'] ?? null, $attachment['mimeType'] ?? null);
|
||||
}
|
||||
}
|
||||
|
||||
$this->mailer->send($email);
|
||||
|
||||
return true;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* EmailServiceTest.php@HDK-Core
|
||||
*
|
||||
@@ -9,15 +10,19 @@
|
||||
|
||||
namespace Singularity\HDK\Test\Core\Service;
|
||||
|
||||
use PharIo\Manifest\Email;
|
||||
use Singularity\HDK\Core\Service\EmailService;
|
||||
use Symfony\Component\Mailer\Exception\TransportException;
|
||||
|
||||
use function Hyperf\Support\make;
|
||||
|
||||
|
||||
it('assertions that send HTML is available', function () {
|
||||
$dsn = 'smtp://account@luxcreo.ai:Qfsd8866@smtp.qiye.aliyun.com:465';
|
||||
$mail_sender_name = 'LuxCreo';
|
||||
$mail_sender = 'account@luxcreo.ai';
|
||||
$email = new EmailService($dsn, $mail_sender_name, $mail_sender);
|
||||
|
||||
it('assertions that send HTML is available', function () use ($email) {
|
||||
// $email = new EmailService($dsn, $mail_sender_name, $mail_sender);
|
||||
$email = make(EmailService::class, ['dsn' => $dsn, 'mailSenderName' => $mail_sender_name, 'mailSender' => $mail_sender]);
|
||||
$result = $email->sendHtml(
|
||||
'dongyun.li@luxcreo.ai',
|
||||
'HDK Unit Test HTML',
|
||||
@@ -26,9 +31,15 @@ it('assertions that send HTML is available', function () use ($email) {
|
||||
HTML
|
||||
);
|
||||
expect($result)->toBeTrue();
|
||||
})->skip();
|
||||
});
|
||||
|
||||
it('assertions that send Text is available', function () {
|
||||
$dsn = 'smtp://account@luxcreo.ai:Qfsd8866@smtp.qiye.aliyun.com:465';
|
||||
$mail_sender_name = 'LuxCreo';
|
||||
$mail_sender = 'account@luxcreo.ai';
|
||||
// $email = new EmailService($dsn, $mail_sender_name, $mail_sender);
|
||||
$email = make(EmailService::class, ['dsn' => $dsn, 'mailSenderName' => $mail_sender_name, 'mailSender' => $mail_sender]);
|
||||
|
||||
it('assertions that send Text is available', function () use ($email) {
|
||||
$result = $email->sendText(
|
||||
'dongyun.li@luxcreo.ai',
|
||||
'HDK Unit Test Text',
|
||||
@@ -37,9 +48,15 @@ it('assertions that send Text is available', function () use ($email) {
|
||||
Text
|
||||
);
|
||||
expect($result)->toBeTrue();
|
||||
})->skip();
|
||||
});
|
||||
|
||||
it('assertions Error Receiver can be catch', function () {
|
||||
$dsn = 'smtp://account@luxcreo.ai:Qfsd8866@smtp.qiye.aliyun.com:465';
|
||||
$mail_sender_name = 'LuxCreo';
|
||||
$mail_sender = 'account@luxcreo.ai';
|
||||
// $email = new EmailService($dsn, $mail_sender_name, $mail_sender);
|
||||
$email = make(EmailService::class, ['dsn' => $dsn, 'mailSenderName' => $mail_sender_name, 'mailSender' => $mail_sender]);
|
||||
|
||||
it('assertions Error Receiver can be catch', function () use ($email) {
|
||||
try {
|
||||
$email->sendHtml(
|
||||
'unknown@luxcreo.ai',
|
||||
@@ -62,4 +79,30 @@ Text
|
||||
} catch (TransportException $t) {
|
||||
expect($t->getCode())->toBe(554);
|
||||
}
|
||||
})->skip('会报错必须运行在协程环境下');
|
||||
});
|
||||
|
||||
it('should can contain attachment', function () {
|
||||
$dsn = 'smtp://account@luxcreo.ai:Qfsd8866@smtp.qiye.aliyun.com:465';
|
||||
$mail_sender_name = 'LuxCreo';
|
||||
$mail_sender = 'account@luxcreo.ai';
|
||||
// $email = new EmailService($dsn, $mail_sender_name, $mail_sender);
|
||||
$email = make(EmailService::class, ['dsn' => $dsn, 'mailSenderName' => $mail_sender_name, 'mailSender' => $mail_sender]);
|
||||
|
||||
$email->sendHtml(
|
||||
'dongyun.li@luxcreo.ai',
|
||||
'HDK Unit Test HTML',
|
||||
<<<HTML
|
||||
<h1>Hello, World!</h1>
|
||||
HTML,
|
||||
[],
|
||||
[],
|
||||
[
|
||||
[
|
||||
'path' => __DIR__ . '/../../README.md',
|
||||
'name' => 'README.md',
|
||||
'mimeType' => 'text/markdown',
|
||||
],
|
||||
],
|
||||
[]
|
||||
);
|
||||
})->only();
|
||||
|
||||
Reference in New Issue
Block a user