csmu
(Keith John Hutchison - Ceiteach Seán Mac Úistin)
1
Nosso servidor Mailgun compartilhado está sendo bloqueado em domínios controlados pela Microsoft. Quero enviar uma mensagem para as pessoas desse grupo que possuem endereços de e-mail da Microsoft.
Estou procurando por algum código em Ruby para encontrar todos os usuários dentro de um grupo com endereços de e-mail em determinados domínios.
Isso acontece conosco às vezes, mas geralmente se resolve sozinho conforme eles lidam com o(s) remetente(s) infrator(es). Algumas vezes, pedi ao suporte do Mailgun para nos mover para um IP menos movimentado e eles fizeram.
csmu
(Keith John Hutchison - Ceiteach Seán Mac Úistin)
3
Outra forma possível: crie um novo grupo e adicione automaticamente os membros de um domínio específico, em seguida, envie uma mensagem para esse grupo:
csmu
(Keith John Hutchison - Ceiteach Seán Mac Úistin)
5
Isto é o que escrevi para extrair os endereços de e-mail de usuários que possuem e-mails em um conjunto de domínios e que pertencem a um conjunto de grupos.
def extract_users_email_addresses_by_named_domains_and_group_names(domain_names=[],group_names=[],output_path=nil,verbose=false)
# TODO: alterar as chamadas 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)
Já fiz com que contas fossem movidas para novos endereços IP com os planos gratuitos de 10 mil/mês, às vezes em menos de uma hora. Você definitivamente deve abrir um chamado.
csmu
(Keith John Hutchison - Ceiteach Seán Mac Úistin)
7
Parece que eles já corrigiram… sem precisar abrir um chamado