-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathemail.php
95 lines (88 loc) · 3.34 KB
/
email.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
namespace system\lib;
use Yii;
use yii\base\Component;
use \Swift_Mailer;
use \Swift_Message;
use \Swift_SmtpTransport;
class email extends Component {
/**
* @var $options \system\modules\setting\components\Options
*/
public $options;
public function init() {
parent::init(); // TODO: Change the autogenerated stub
$this->options=Yii::$app->Options;
}
//پس از ثبت نام کاربر
/**
* ایمیلی که پس از ثبت نام برای کاربر ارال می گردد
* @param $user \common\models\Users مدل کاربر
*
* @return int
*/
public function sendRegister($user) {
/* @var $settings \common\models\Settings */
/* @var $user \common\models\Users */
$subject = 'ثبت نام';
$message = static::replace($user, Yii::$app->Options->email_text_after_register, $subject);
return static::send( $user->email, $user->fullname, $subject, $message);
}
//بازیابی رمز عبور
public function sendResetPassword( $user) {
/* @var $settings \common\models\Settings */
/* @var $user \common\models\Users */
$subject = 'بازیابی رمز عبور';
$resetLink = Yii::$app->urlManager->createAbsoluteUrl(['site/reset-password', 'token' => $user->password_reset_token]);
$message = static::replace($user, "<a href=\"$resetLink\">$resetLink</a>", $subject);
return static::send( $user->email, $user->fullname, $subject, $message);
}
//
private function send( $email_address, $name, $subject, $message) {
$encryption='';
$port='';
$server='';
switch (Yii::$app->Options->emailEncryptionMode){
case 'tls':
$server=Yii::$app->Options->emailServerSSL;
$encryption='tls';
$port=Yii::$app->Options->emailPort;
break;
case 'normal':
$server=Yii::$app->Options->emailServer;
$encryption=null;
$port=Yii::$app->Options->emailPortNoSSL;
break;
}
$mail = Swift_SmtpTransport::newInstance($server,$port, $encryption);
/* @var $setting \common\models\Settings */
$mail->setUsername(Yii::$app->Options->emailUsername);
$mail->setPassword(Yii::$app->Options->emailPassword);
$mailer = Swift_Mailer::newInstance($mail);
$swift_message = Swift_Message::newInstance($subject);
$swift_message->setFrom(Yii::$app->Options->emailUsername, Yii::$app->Options->siteTitle . ' | ' . Yii::t('base', 'Support'));
$swift_message->setTo($email_address, $name);
$swift_message->setBody($message, 'text/html', 'UTF-8');
return $mailer->send($swift_message);
}
private function replace($user, $message, $subject) {
/* @var $user \common\models\Users */
$output = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" . Yii::$app->charset . "\" />
<title>$subject</title>
</head>
<body dir=\"rtl\">
";
$output .= str_replace([
'{username}', '{email}', '{fullname}',
], [
$user->username, $user->email, $user->fullname,
], $message);
$output .= "
</body>
</html>";
return $output;
}
}