目前,我希望在用户在Drupal 7中更新帐户后向用户发送有关电子邮件的所有详细信息。
我能够成功发送用户其他详细信息,但我无法发送密码。
我使用drupal规则和action发送所有细节。我试图在身体上添加[user:password],但密码仍然是空白。
我发送了所有这样的细节:
Your Updated Name : [account:name]
Your unique id : [account:uid]
Your Roles : [account:roles]
Your Password is [account:password]
请告诉我我在身上写的密码。
如果我不应该通过电子邮件发送密码,如果不可能,我可以发送重置密码的链接。
我想知道我们怎么能这样做,每个人都会收到一封带有新密码的电子邮件 - 或者是一封重置密码的电子邮件。
让我知道哪一个可能以及如何?
答案 0 :(得分:1)
默认情况下,Drupal在创建新帐户时不会创建密码,因此您无法使用注册电子邮件发送密码,但您可以发送一次性链接,允许用户激活&## 34;他们的帐户并设置密码。
在这种情况下,您的一次性网址标记为:[user:one-time-login-url]
答案 1 :(得分:1)
您无法从数据库获取密码,因为它未作为普通值存储。相反,密码是经过哈希处理(转换为某些哈希码)以及单向操作。您无法从该哈希字符串中获取密码。
此外,由于存在安全风险,在电子邮件中发送密码并不明智。
但是,如果用户刚刚更改了密码(提交了包含密码值的表单),您可以获取密码(并发送)。如果您真的想要这样做,请尝试为用户更新表单创建表单处理程序。然后挂钩它,这样你的表单处理程序就会被调用,你可以获得提交的数据,包括密码和从那里发送电子邮件。
代码看起来像这样:
/**
* Implementation of hook_form().
*/
function mymodule_form_page_node_form_alter(&$form, &$form_state) {
$form['buttons']['Change a taxonomy value and save'] = Array (
'#type' => 'submit',
'#value' => t('Change a taxonomy value and save'),
'#weight' => 4,
'#submit' => Array('_mymodule_change_page_taxonomy_value_submit', 'node_form_submit')
);
}
/**
* Function to perform changes to the taxonomy field before page is saved
*/
function _mymodule_change_page_taxonomy_value_submit($form, &$form_state) {
// Change the taxonomy value to whatever it is meant to be
$mynewtaxonomyvalue = [taxonomyobjectfromsomewhere];
$form_state['values']['taxonomy'][5] = $mynewtaxonomyvalue->tid;
}
但首先检查一下,当用户使用规则更改密码时,也许密码令牌也可用,因此您无需编码。
答案 2 :(得分:0)
我找到了我的问题答案,并且它成功运作了。 现在我已成功将重置密码的链接发送给用户。