diff --git a/app/Http/Controllers/Home/Contact.php b/app/Http/Controllers/Home/Contact.php
index f3b138d..a083c6d 100644
--- a/app/Http/Controllers/Home/Contact.php
+++ b/app/Http/Controllers/Home/Contact.php
@@ -7,6 +7,7 @@ use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Log;
+use App\Http\Controllers\MailerController;
use App\Mail\ContactNotifyMail;
class Contact {
@@ -50,6 +51,7 @@ class Contact {
$this->field['adr'] = $r->adr;
$this->field['kenmei'] = $r->kenmei;
$this->field['cat'] = $r->cat;
+ $this->field['catname'] = $r->cat;
$this->field['gpg'] = !isset($r->gpg) || is_null($r->gpg) || $r->gpg == '' ? null : file_get_contents($r->file('gpg'));
$this->field['bunsyo'] = $r->bunsyo;
$this->field['ruleapply'] = isset($r->ruleapply);
@@ -60,7 +62,7 @@ class Contact {
// メールアドレス
if (!isset($this->field['adr']) || is_null($this->field['adr']) || $this->field['adr'] == '') $err[] = 'メールアドレスをご入力下さい。';
else if (!filter_var($this->field['adr'], FILTER_VALIDATE_EMAIL)) $err[] = 'メールアドレスを正しくご入力下さい。';
- $filename = trim($this->field['adr']).'.key';
+ $this->field['filename'] = trim($this->field['adr']).'.key';
// 件名
if (!isset($this->field['kenmei']) || is_null($this->field['kenmei']) || $this->field['kenmei'] == '') $err[] = '件名をご入力下さい。';
@@ -76,8 +78,8 @@ class Contact {
$gpg = new \gnupg();
$info = $gpg->import($this->field['gpg']);
$gpg->addencryptkey($info['fingerprint']);
- Storage::disk('public')->put($filename, $this->field['gpg']);
- $path = Storage::disk('public')->path($filename);
+ Storage::disk('public')->put($this->field['filename'], $this->field['gpg']);
+ $path = Storage::disk('public')->path($this->field['filename']);
$verifygpg = explode("\n", $this->run('gpg --dry-run --import '.$path))[0];
if (!str_contains($verifygpg, '処理数の合計: 1') && !str_contains($verifygpg, 'Total number processed: 1')) $err[] = $verifygpg;
}
@@ -91,27 +93,35 @@ class Contact {
if (!$this->field['ruleapply']) $err[] = 'ルールを同意して下さい。';
if (!empty($err)) {
- if (isset($this->field['gpg']) && !is_null($this->field['gpg']) && $this->field['gpg'] != '') Storage::disk('public')->delete($filename);
+ if (isset($this->field['gpg']) && !is_null($this->field['gpg']) && $this->field['gpg'] != '') Storage::disk('public')->delete($this->field['filename']);
return view('pages.site.contact', ['field' => $this->field, 'err' => $err]);
}
// カテゴリはDMCA報告、営業、税金、法律、又は無駄な話を選択したら、いつでも送信せず失敗します。
if (str_contains($this->field['cat'], 'scam')) {
- Storage::disk('public')->delete($filename);
+ Storage::disk('public')->delete($this->field['filename']);
return view('pages.site.contact', ['field' => $this->field, 'err' => ['送信に失敗しました。数時間後もう一回送信してみて下さい。']]);
}
+ foreach ($this->field['cats'] as $i => $c) {
+ if ($this->field['cat'] == $i) $this->field['catname'] = $c;
+ }
+
// メールを送る
try {
- Mail::to(config('mail.from.address'))->send(new ContactNotifyMail($this->field, $filename));
+ $mail = new MailerController();
+ if (!$mail->compose($this->field)) {
+ Storage::disk('public')->delete($this->field['filename']);
+ return view('pages.site.contact', ['field' => $this->field, 'err' => ['送信に失敗しました。数時間後もう一回送信してみて下さい。']]);
+ }
} catch (\Throwable $e) {
- Storage::disk('public')->delete($filename);
+ Storage::disk('public')->delete($this->field['filename']);
$this->field['bunsyo'] = $r->bunsyo;
Log::critical($e);
return view('pages.site.contact', ['field' => $this->field, 'err' => ['送信に失敗しました。数時間後もう一回送信してみて下さい。']]);
}
- Storage::disk('public')->delete($filename);
+ Storage::disk('public')->delete($this->field['filename']);
$this->field['kenmei'] = '';
$this->field['adr'] = '';
$this->field['cat'] = '';
diff --git a/app/Http/Controllers/MailerController.php b/app/Http/Controllers/MailerController.php
new file mode 100644
index 0000000..4c5c385
--- /dev/null
+++ b/app/Http/Controllers/MailerController.php
@@ -0,0 +1,67 @@
+SMTPDebug = 1;
+ $mail->isSMTP();
+ $mail->Host = config('mail.mailers.smtp.host');
+ $mail->Port = config('mail.mailers.smtp.port');
+ $mail->SMTPSecure = config('mail.mailers.smtp.encryption');
+ $mail->SMTPAuth = true;
+ $mail->From = config('mail.owner.address');
+ $mail->Username = config('mail.mailers.smtp.username');
+ $mail->Password = config('mail.mailers.smtp.password');
+
+ $mail->AddAddress(config('mail.owner.address'));
+ $mail->addReplyTo(config('mail.owner.address'), config('mail.owner.name'));
+
+ $mail->SMTPOptions = [
+ 'ssl' => [
+ 'verify_peer' => false,
+ 'verify_peer_name' => false,
+ 'allow_self_signed' => true
+ ]
+ ];
+
+ if (isset($val['attach'])) {
+ for ($i=0; $i < count($val['attach']); $i++) {
+ $mail->AddAttachment($val['attach'][$i], $val['attachname'][$i]);
+ }
+ }
+
+ if (isset($val['gpg'])) {
+ $mail->AddStringAttachment($val['gpg'], $val['gpgname']);
+ }
+
+ $mail->isHTML(false);
+
+ $mail->Subject = '【'.$val['catname'].'】'.$val['kenmei'];
+ $mail->Body = "メール:".$val['adr']."\n\n".$val['bunsyo'];
+
+ if (!$mail->send()) {
+ Log::critical('Mailer error: ' . $mail->ErrorInfo);
+ return false;
+ }
+ } catch (Exception $e) {
+ Log::critical($e);
+ return false;
+ }
+
+ return true;
+ }
+}
diff --git a/app/Mail/ContactNotifyMail.php b/app/Mail/ContactNotifyMail.php
deleted file mode 100644
index 2dd7de8..0000000
--- a/app/Mail/ContactNotifyMail.php
+++ /dev/null
@@ -1,23 +0,0 @@
-form = $form;
- $this->file = $file;
- }
-
- public function build () {
- return $this->from($this->form['adr'])->subject($this->form['kenmei'])->markdown('emails.notify.contact', ['form' => $this->form])->attachFromStorage('public/'.$this->file);
- }
-}
diff --git a/composer.json b/composer.json
index 9957762..8b68794 100644
--- a/composer.json
+++ b/composer.json
@@ -14,7 +14,7 @@
"guzzlehttp/guzzle": "^7.4.0",
"laravel/framework": "^8.74.0",
"laravel/tinker": "^2.6.2",
- "phpmailer/phpmailer": "^6.5.3",
+ "phpmailer/phpmailer": "^6.5",
"predis/predis": "^1.1.9"
},
"require-dev": {
diff --git a/resources/views/emails/notify/contact.blade.php b/resources/views/emails/notify/contact.blade.php
deleted file mode 100644
index ffcf7dd..0000000
--- a/resources/views/emails/notify/contact.blade.php
+++ /dev/null
@@ -1,10 +0,0 @@
-@component('mail::message')
-# {{ $form['kenmei'] }}
-
-{{ $form['adr'] }}
-{{ $form['cat'] }}
-
-□□□□□□□□□□□□□□□□□□□□
-
-{{ nl2br($form['bunsyo']) }}
-@endcomponent