Fecshop 邮件

当用户注册邮箱,下单,忘记密码等,都会给用户发送一封邮件,邮件部分 支持多语言。

SMTP配置文件为:

@common/config/fecshop_local_services/Email.php

配置如下:

return [
	'email' => [
		'mailerConfig' => [
			# 默认通用配置
			'default' => [
				'class' => 'yii\swiftmailer\Mailer',
				'transport' => [
					'class' => 'Swift_SmtpTransport',
					'host' => 'smtp.qq.com',			#SMTP Host
					'username' => '372716335@qq.com',   #SMTP 账号
					'password' => 'wffmbummgnhhcbbj',	#SMTP 密码
					'port' => '587',					#SMTP 端口
					'encryption' => 'tls',
				],
				'messageConfig'=>[  
				   'charset'=>'UTF-8',  
				], 
			],
        ],
	],
];

对于上面配置中的的 mailerConfig,除了default,您还可以继续添加其他的SMTP 配置,

您只要配置完上面的文件,就把smtp配置好了。

邮件选择smtp配置

fecshop的配置文件为:@fecshop/config/services/Email.php

在邮件模板里面可以指定使用上面配置文件中的mailerConfig里面的 数组key,譬如default

在customer子服务中就可以设置,譬如:

'login' => [
			'enable' => true,
			# 邮件内容的动态数据提供部分
			'widget'		=> 'fecshop\services\email\widgets\customer\account\login\Body',
			# 邮件内容的view部分
			'viewPath' 	=> '@fecshop/services/email/views/customer/account/login',
			# 如果不定义 mailerConfig,则会使用email service里面的默认配置
			'mailerConfig'  => 'default',
		],

公用配置

对于邮件里面会出现一些store方面的公用配置,在配置文件中可以看到

		//公用配置
		'mailerInfo'	=> [
			#在邮件中显示的Store的名字
			'storeName' 	=> 'FecShop',
			# 在邮件中显示的电话
			'phone'			=> 'xxxxxxxxxx',
			# 在邮件中显示的联系邮箱地址。
			'contacts'	=> [
				'emailAddress' => '2358269014@qq.com',
			],
			
		],

修改成您自己的信息即可.

注意:不要在 vendor/fancyecommerce下面修改任何文件, 对配置的更改,您应该在您的配置目录下添加, 譬如您可以在 @appfront/config/fecshop_local_services/Email.php 下面 添加配置,在系统初始化的时候,高优先级的配置会覆盖fecshop的配置。

邮件模板配置介绍,以及邮件多语言原理

在文件 @fecshop/config/services/Email.php中对 子服务 customer 里面,有很多邮件模板的配置

viewPath 就是邮件模板html部分 , widget是动态数据提供部分。

譬如:

'customer' => [
	'class' => 'fecshop\services\email\Customer',
	
	# 各个邮件的模板部分:
	'emailTheme' => [
		# 注册账户发送的邮件的模板配置
		'register' => [
			'enable' => true,
			# 邮件内容的动态数据提供部分
			'widget'		=> 'fecshop\services\email\widgets\customer\account\register\Body',
			# 邮件内容的view部分
			'viewPath' 		=> '@fecshop/services/email/views/customer/account/register',
			/**
			 * 1.默认是default,譬如下面的 'mailerConfig'  => 'default',你可以不填写,因为默认就是default
			 * 2.您可以使用上面email服务的配置项mailerConfig中的设置的各个项,譬如填写default 或者 login等。
			 * 3.您还可以直接填写数组的配置(完整配置),譬如:
			 * 'register' => [
			 *		'class' => 'yii\swiftmailer\Mailer',
			 *		'transport' => [
			 *			'class' => 'Swift_SmtpTransport',
			 *			'host' => 'smtp.qq.com',
			 *			'username' => '372716335@qq.com',
			 *			'password' => 'wffmbummgnhhcbbj',
			 *			'port' => '587',
			 *			'encryption' => 'tls',
			 *		],
			 *		'messageConfig'=>[  
			 *		   'charset'=>'UTF-8',  
			 *		], 
			 *		
			 *	],
			 */
			'mailerConfig'  => 'default',
		],
		# 登录用户发送邮件的模板的设置。
		'login' => [
			'enable' => true,
			# 邮件内容的动态数据提供部分
			'widget'		=> 'fecshop\services\email\widgets\customer\account\login\Body',
			# 邮件内容的view部分
			'viewPath' 	=> '@fecshop/services/email/views/customer/account/login',
			# 如果不定义 mailerConfig,则会使用email service里面的默认配置
			'mailerConfig'  => 'default',
		],
		# 忘记密码发送邮件的模板的设置
		'forgotPassword' => [
			'enable' => true,
			'widget'		=> 'fecshop\services\email\widgets\customer\account\forgotpassword\Body',
			# 邮件内容的view部分
			'viewPath' 	=> '@fecshop/services/email/views/customer/account/forgotpassword',
			#忘记密码邮件发送后的超时时间。
			'passwordResetTokenExpire' => 86400, # 3600*24*1, # 一天
			# 如果不定义 mailerConfig,则会使用email service里面的默认配置
			# 通过邮箱找回密码,发送的resetToken过期的秒数
			'mailerConfig'  => 'default',
		],
		# 联系我们发送的邮件模板
		'contacts' => [
			'enable' => true,
			# 联系我们的邮箱地址
			
			# widget  邮件动态数据提供部分。
			'widget'		=> 'fecshop\services\email\widgets\customer\contacts\Body',
			# 邮件内容的view部分
			'viewPath' 	=> '@fecshop/services/email/views/customer/contacts',
			'address'	=> '2358269014@qq.com',
			# 如果不定义 mailerConfig,则会使用email service里面的默认配置
			//'mailerConfig'  => 'default',
		],
		# 订阅newsletter后发送的邮件模板。
		'newsletter' => [
			# 订阅邮件成功后,是否发送邮件给用户
			'enable'	=> true,
			# widget  邮件动态数据提供部分。
			'widget'		=> 'fecshop\services\email\widgets\customer\newsletter\Body',
			# 邮件内容的view部分
			'viewPath' 	=> '@fecshop/services/email/views/customer/newsletter',
			# 如果不定义 mailerConfig,则会使用email service里面的默认配置
			'mailerConfig'  => 'default',
		],
	],
],

对于邮件模板 , widget (动态数据) 和 viewPath(静态文件) 功能形成了模板内容。

widget 对应的是动态数据的php对象,譬如: 'widget' => 'fecshop\services\email\widgets\customer\newsletter\Body' 对应的是@fecshop\services\email\widgets\customer\newsletter\Body.php文件

view是html部分的路径,在该路径下面需要有subject(邮件标题)和body(邮件内容)两个部分,然后加上语言, 譬如:@fecshop/services/email/views/customer/newsletter下面有 subject_en.phpbody_en.php两个文件,代表英文语言的邮件标题和邮件内容, 你可以添加subject_fr.php和body_fr.php两个文件,代表 法文状态下的邮件标题和邮件内容。

如果您想要得到法文的邮件,但是没有subject_fr.php 和 body_fr.php 文件,那么,系统会使用默认语言的邮件,也就是subject_en.php 和body_en.php

邮件重写

如果您想重写邮件的内容,那么您在配置中重新指定viewPathwidget 的值,在路径中重新写subjectbody文件即可。

fecshop的配置文件为:@fecshop/config/services/Email.php

# 注册账户发送的邮件的模板配置
'register' => [
    'enable' => true,
    # 邮件内容的动态数据提供部分
    'widget'		=> 'fecshop\services\email\widgets\customer\account\register\Body',
    # 邮件内容的view部分
    'viewPath' 		=> '@fecshop/services/email/views/customer/account/register',
    
    'mailerConfig'  => 'default',
],

譬如重写登录发送邮件的模板:

您可以新建一个widget 继承fecshop\services\email\widgets\customer\account\login\Body, 来实现widget的重写。

对于view文件,可以新建一个viewPath,然后把 @fecshop/services/email/views/customer/account/login 里面的所有文件复制 到本地的viewPath中,然后重写即可。