python邮箱合法性

请编程判断给定的字符串是否是形式上合法的邮箱。

题目中先给出一个整型数n(1 ≤ n ≤ 30),表示后面有n行字符串需要判断。随后的n行中,每行一个字符串,需要进行合法性判断。对于合法的字符串,应输出“Y”,否则输出“N”,结果中间不用空格。
第一行是正整数数n。从第2行到第n+1行,每行一个字符串,需要判断其合法性

输出格式
由“Y”和“N”组成的一行数据,分别表示第n个数据是合法还是非法

import re
 
n = int(input())
b=[]
 
for i in range(n):
    email = input().strip()
    if re.match(r'^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+$', email):
        b.append("Y")
    else:
        b.append("N")
for j in b:
    print(j,end='')

想问一下这个代码还有哪里不对吗

正则调整下

实际信箱地址中,@前边可以出现点

^[a-zA-Z0-9_\.-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$