mirror of
http://124.126.16.154:8888/singularity/HyperfDevelopmentKitCore.git
synced 2026-01-15 03:45:06 +08:00
feat(email): 添加邮件附件功能
- 在 EmailWillSent 事件中添加 attachmentPaths 和 attachments 属性 - 在 EmailService 中添加处理附件的逻辑 - 更新 EmailWillSentListener 以支持附件发送
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* EmailWillSent.php@HDK-Core
|
||||
*
|
||||
@@ -10,6 +11,7 @@
|
||||
namespace Singularity\HDK\Core\Events;
|
||||
|
||||
use Singularity\HDK\Core\Service\EmailService;
|
||||
use Symfony\Component\Mime\Address;
|
||||
use Symfony\Component\Mime\Email;
|
||||
|
||||
/**
|
||||
@@ -25,9 +27,9 @@ class EmailWillSent
|
||||
{
|
||||
public function __construct(
|
||||
/**
|
||||
* @var string|string[] $target
|
||||
* @var Address|string|string[]|Address[] $target
|
||||
*/
|
||||
public string|array $target,
|
||||
public Address|string|array $target,
|
||||
|
||||
/**
|
||||
* @var non-empty-string $subject
|
||||
@@ -68,6 +70,17 @@ class EmailWillSent
|
||||
* @var EmailService|null
|
||||
*/
|
||||
public ?EmailService $sender = null,
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 附件路径集合、含附件路径、文件名、文件类型的数组集合
|
||||
* @var string[]|array{'path': string, 'name': string, 'mimeType': string}[] $attachmentPaths
|
||||
*/
|
||||
public array $attachmentPaths = [],
|
||||
|
||||
/**
|
||||
* 附件内容集合、含附件内容、文件名、文件类型的数组集合
|
||||
* @var string[]|array{'content': string, 'name': string, 'mimeType': string}[] $attachments
|
||||
*/
|
||||
public array $attachments = [],
|
||||
) {}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* EmailWillSentListener.php@HDK-Core
|
||||
*
|
||||
@@ -65,6 +66,8 @@ class EmailWillSentListener implements ListenerInterface
|
||||
html: $event->content,
|
||||
cc: $event->cc,
|
||||
bcc: $event->bcc,
|
||||
attachmentPaths: $event->attachmentPaths,
|
||||
attachments: $event->attachments,
|
||||
priority: $event->priority
|
||||
)
|
||||
: $emailService->sendText(
|
||||
@@ -73,6 +76,8 @@ class EmailWillSentListener implements ListenerInterface
|
||||
text: $event->content,
|
||||
cc: $event->cc,
|
||||
bcc: $event->bcc,
|
||||
attachmentPaths: $event->attachmentPaths,
|
||||
attachments: $event->attachments,
|
||||
priority: $event->priority
|
||||
);
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ class EmailService
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|array<string> $target
|
||||
* @param Address|string|array<string|Address> $target
|
||||
* @param string $subject
|
||||
* @param string $text
|
||||
* @param array<string> $cc
|
||||
@@ -90,11 +90,13 @@ class EmailService
|
||||
* @throws TransportExceptionInterface
|
||||
*/
|
||||
public function sendText(
|
||||
string|array $target,
|
||||
Address|string|array $target,
|
||||
string $subject,
|
||||
string $text,
|
||||
array $cc = [],
|
||||
array $bcc = [],
|
||||
array $attachmentPaths = [],
|
||||
array $attachments = [],
|
||||
int $priority = Email::PRIORITY_NORMAL
|
||||
): bool {
|
||||
$email = (new Email())
|
||||
@@ -106,6 +108,22 @@ class EmailService
|
||||
->subject($subject)
|
||||
->text($text);
|
||||
|
||||
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;
|
||||
@@ -114,7 +132,7 @@ class EmailService
|
||||
/**
|
||||
* 以 HTML 格式发送邮件
|
||||
*
|
||||
* @param string|array<string> $target
|
||||
* @param Address|string|array<string|Address> $target
|
||||
* @param string $subject
|
||||
* @param string $html
|
||||
* @param array<string> $cc
|
||||
@@ -125,7 +143,7 @@ class EmailService
|
||||
* @throws TransportExceptionInterface
|
||||
*/
|
||||
public function sendHtml(
|
||||
string|array $target,
|
||||
Address|string|array $target,
|
||||
string $subject,
|
||||
string $html,
|
||||
array $cc = [],
|
||||
|
||||
Reference in New Issue
Block a user