You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为用户生成随机密码并通过邮件精准发送?

解决用户名与对应密码匹配发送邮件的问题

你当前的问题出在发送邮件的脚本使用了两层嵌套循环:外层遍历所有用户名,内层遍历所有密码,导致每个用户名会和所有密码组合发送邮件,最终每个用户收到多封包含不同密码的邮件。下面是修正后的完整方案:

修正后的密码生成脚本

#!/bin/bash
# 清空目标文件(避免重复内容)
> /tmp/u_p.txt
# 逐行读取用户列表文件
while IFS= read -r line
do
    # 生成随机密码
    passrand=$(openssl rand -base64 12) 
    # 将用户名和密码对应写入文件,用空格分隔
    echo -e "$line $passrand" >> /tmp/u_p.txt
done < /tmp/user_names.txt

说明:用while read逐行读取用户文件比for line in $file更可靠(避免用户名含空格时出错),同时直接将对应关系写入/tmp/u_p.txt。

修正后的邮件发送脚本

#!/bin/bash
# 逐行读取用户名和密码对应关系
while IFS=' ' read -r maillogin pass
do
    # 发送仅包含当前用户对应密码的邮件
    echo "Hello, your login is $maillogin and password is $pass" | mail -s "Your Account Credentials" "${maillogin}@example.com"
done < /tmp/u_p.txt

说明:用while IFS=' ' read -r maillogin pass逐行读取文件,每行拆分出用户名和密码,一次循环处理一个用户的邮件发送,确保每个用户只收到一封包含自己对应密码的邮件。

关键改进点

  • 密码生成阶段:确保用户名和密码一一对应写入文件,而非仅打印输出
  • 邮件发送阶段:去掉嵌套循环,改为逐行读取对应关系,一次处理一个用户的凭证发送

内容的提问来源于stack exchange,提问作者TerySpace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 12:10:57