csmu
(Keith John Hutchison - Ceiteach Seán Mac Úistin)
1
Nuestro servidor compartido de Mailgun está siendo bloqueado en dominios controlados por Microsoft. Quiero enviar un mensaje a las personas de ese grupo que tengan direcciones de correo electrónico de Microsoft.
Busco código en Ruby para encontrar todos los usuarios dentro de un grupo con direcciones de correo electrónico en ciertos dominios.
Esto nos ocurre de vez en cuando, pero generalmente se resuelve por sí solo a medida que ellos gestionan al remitente o remitentes infractores. En algunas ocasiones, he solicitado al soporte de Mailgun que nos asignen una dirección IP menos concurrida y lo han hecho.
csmu
(Keith John Hutchison - Ceiteach Seán Mac Úistin)
3
csmu
(Keith John Hutchison - Ceiteach Seán Mac Úistin)
5
Esto es lo que escribí para extraer las direcciones de correo electrónico de usuarios que tienen correos dentro de un conjunto de dominios y que pertenecen a un conjunto de grupos.
def extract_users_email_addresses_by_named_domains_and_group_names(domain_names=[], group_names=[], output_path=nil, verbose=false)
# TODO: cambiar las llamadas SQL para usar parámetros
results = []
user_ids = []
group_ids = []
users_email_addresses = []
group_names_sql = 'select * from groups where '
group_names_where = ''
user_emails_sql = 'select user_id from user_emails where '
user_emails_where = ''
if domain_names.length > 0 and group_names.length > 0 then
domain_names.each do |domain_name|
if user_emails_where.length == 0 then
user_emails_where = sprintf("email like '%%%s%%'", domain_name)
else
user_emails_where = sprintf("%s or email like '%%%s%%'", user_emails_where, domain_name)
end
end
user_emails_sql = sprintf("%s %s", user_emails_sql, user_emails_where)
if verbose then
puts "UserEmail.find_by_sql(\"#{user_emails_sql}\")"
end
user_emails = UserEmail.find_by_sql(user_emails_sql)
user_emails.each do |user_email|
user_ids.push(user_email.user_id)
end
group_names.each do |group_name|
if group_names_where.length == 0 then
group_names_where = sprintf("name like '%%%s%%'", group_name)
else
group_names_where = sprintf("%s or name like '%%%s%%'", group_names_where, group_name)
end
end
group_names_sql = sprintf("%s %s", group_names_sql, group_names_where)
if verbose then
puts "Group.find_by_sql(\"#{group_names_sql}\")"
end
groups = Group.find_by_sql(group_names_sql)
groups.each do |group|
group_ids.push(group.id)
end
group_users = GroupUser.where(group_id: group_ids.to_set, user_id: user_ids.to_set)
user_ids = []
group_users.each do |group_user|
user_ids.push(group_user.user_id)
end
users = User.where(id: user_ids.to_set)
users.each do |user|
users_email_addresses.push(sprintf("%s", user.email))
end
if output_path then
file = File.open(output_path, "w")
first = true
users_email_addresses.each do |users_email_address|
if first then
first = false
file.write(users_email_address)
else
file.write(sprintf(",%s", users_email_address))
end
end
file.write("\n")
file.close()
end
end
return { group_ids: group_ids.to_set, user_ids: user_ids.to_set, users_email_addresses: users_email_addresses }
end
domain_names = ['outlook.com', 'hotmail', 'live.com']
group_names = ['irish-club-members']
output_path = 'irish-club-microsoft-email-list.txt'
verbose = false
extract_users_email_addresses_by_named_domains_and_group_names(domain_names: domain_names, group_names: group_names, output_path: output_path, verbose: verbose)
He logrado que movieran cuentas a nuevas direcciones IP con los planes gratuitos de 10k/mes, a veces en menos de una hora. Definitivamente deberías abrir un ticket.
csmu
(Keith John Hutchison - Ceiteach Seán Mac Úistin)
7
Parece que ya lo solucionaron… sin necesidad de abrir un ticket