mirror of
http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore.git
synced 2026-01-15 04:05:06 +08:00
feat(EmailService): 添加邮件附件功能并更新单元测试
- 在 EmailService 类的 sendHtml 方法中添加了附件处理逻辑 - 更新了 EmailServiceTest 单元测试,增加了附件发送的测试用例 - 优化了测试用例的结构,提高了可读性和可维护性
This commit is contained in:
@@ -130,6 +130,8 @@ class EmailService
|
|||||||
string $html,
|
string $html,
|
||||||
array $cc = [],
|
array $cc = [],
|
||||||
array $bcc = [],
|
array $bcc = [],
|
||||||
|
array $attachmentPaths = [],
|
||||||
|
array $attachments = [],
|
||||||
int $priority = Email::PRIORITY_NORMAL
|
int $priority = Email::PRIORITY_NORMAL
|
||||||
): bool {
|
): bool {
|
||||||
$email = (new Email())
|
$email = (new Email())
|
||||||
@@ -141,6 +143,22 @@ class EmailService
|
|||||||
->subject($subject)
|
->subject($subject)
|
||||||
->html($html);
|
->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);
|
$this->mailer->send($email);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* EmailServiceTest.php@HDK-Core
|
* EmailServiceTest.php@HDK-Core
|
||||||
*
|
*
|
||||||
@@ -9,15 +10,19 @@
|
|||||||
|
|
||||||
namespace Singularity\HDK\Test\Core\Service;
|
namespace Singularity\HDK\Test\Core\Service;
|
||||||
|
|
||||||
|
use PharIo\Manifest\Email;
|
||||||
use Singularity\HDK\Core\Service\EmailService;
|
use Singularity\HDK\Core\Service\EmailService;
|
||||||
use Symfony\Component\Mailer\Exception\TransportException;
|
use Symfony\Component\Mailer\Exception\TransportException;
|
||||||
|
|
||||||
$dsn = 'smtp://account@luxcreo.ai:Qfsd8866@smtp.qiye.aliyun.com:465';
|
use function Hyperf\Support\make;
|
||||||
$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) {
|
|
||||||
|
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);
|
||||||
|
$email = make(EmailService::class, ['dsn' => $dsn, 'mailSenderName' => $mail_sender_name, 'mailSender' => $mail_sender]);
|
||||||
$result = $email->sendHtml(
|
$result = $email->sendHtml(
|
||||||
'dongyun.li@luxcreo.ai',
|
'dongyun.li@luxcreo.ai',
|
||||||
'HDK Unit Test HTML',
|
'HDK Unit Test HTML',
|
||||||
@@ -26,9 +31,15 @@ it('assertions that send HTML is available', function () use ($email) {
|
|||||||
HTML
|
HTML
|
||||||
);
|
);
|
||||||
expect($result)->toBeTrue();
|
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(
|
$result = $email->sendText(
|
||||||
'dongyun.li@luxcreo.ai',
|
'dongyun.li@luxcreo.ai',
|
||||||
'HDK Unit Test Text',
|
'HDK Unit Test Text',
|
||||||
@@ -37,9 +48,15 @@ it('assertions that send Text is available', function () use ($email) {
|
|||||||
Text
|
Text
|
||||||
);
|
);
|
||||||
expect($result)->toBeTrue();
|
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 {
|
try {
|
||||||
$email->sendHtml(
|
$email->sendHtml(
|
||||||
'unknown@luxcreo.ai',
|
'unknown@luxcreo.ai',
|
||||||
@@ -62,4 +79,30 @@ Text
|
|||||||
} catch (TransportException $t) {
|
} catch (TransportException $t) {
|
||||||
expect($t->getCode())->toBe(554);
|
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